Ich verwende Qt für die Entwicklung von GUI-Anwendungen.Multiprocessing mit Qt funktioniert in Windows aber nicht Linux
Ich erhalte eine Fehlermeldung, wenn ich versuche QApplication
multiprocessing
mit anderen zu erstellen:
RuntimeError: A QApplication instance already exists
ich ein Hauptfenster haben, die zum Laichen einen neuen Prozess eine Schaltfläche enthält, so dass ich eine neue GUI-Instanz erstellen können. Im Grunde wie folgt aus:
from PySide.QtCore import *
from PySide.QtGui import *
import multiprocessing
import sys
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
btn = QPushButton('run new instance')
btn.clicked.connect(self.create_daemon)
self.setCentralWidget(btn)
def create_daemon(self):
p = multiprocessing.Process(target=new_window)
p.start()
def new_window():
app=QApplication(sys.argv)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())
if __name__=="__main__":
app=QApplication(sys.argv)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())
Es funktioniert unter Windows, sondern gibt dem RuntimeError
in Linux. Liegt das an einem Unterschied im Multiprocessing-Mechanismus zwischen Windows und Linux? Wie kann ich dasselbe in Linux erreichen?
Was ist der Fehler in vollem Umfang? –
@PeterWood Fehler in Linux: 'RuntimeError: Eine QApplication-Instanz existiert bereits.' Das bedeutet, dass Linux nicht denselben Prozess wie Windows erstellt hat. Ein neuer unter Linux erstellter Prozess kann die QApplication erkennen, die in meinem Main-Prozess ausgeführt wird. – Northern
verwenden Sie ipython unter Linux? – w5e