Я использую Qt для разработки приложений с графическим интерфейсом.
Я получаю сообщение об ошибке, когда пытаюсь создать еще один QApplication
с помощью multiprocessing
:
RuntimeError: Экземпляр QApplication уже существует
У меня есть главное окно, содержащее кнопку для запуска нового процесса, чтобы я мог создать новый экземпляр графического интерфейса. В основном так:
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_())
Он работает в Windows, но дает RuntimeError
в Linux. Это из-за разницы в многопроцессорном механизме между Windows и Linux? Как я могу добиться того же в Linux?
RuntimeError: A QApplication instance already exists.
что означает, что Linux не создал тот же процесс, что и Windows. Новый процесс, созданный в Linux, может обнаружить приложение QApplication, работающее в моем основном процессе. - person Northern   schedule 10.04.2015