Sto usando Qt per lo sviluppo di applicazioni GUI.La multiprocessing con Qt funziona su Windows ma non su Linux
ottengo un errore quando provo a creare un altro QApplication
utilizzando multiprocessing
:
RuntimeError: A QApplication instance already exists
Ho una finestra principale, che contiene un pulsante per la deposizione delle uova un nuovo processo in modo che io possa creare una nuova istanza GUI. In pratica in questo modo:
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_())
Funziona in Windows, ma dà l'RuntimeError
in Linux. Ciò è dovuto alla differenza nel meccanismo di multiprocessing tra Windows e Linux? Come potrei ottenere la stessa cosa in Linux?
Qual è l'errore in pieno? –
@PeterWood Errore in Linux: 'RuntimeError: esiste già un'istanza QApplication. Ciò significa che Linux non ha creato lo stesso processo di Windows. Il nuovo processo creato in Linux può rilevare QApplication in esecuzione nel mio processo principale. – Northern
stai usando ipython su linux? – w5e