#python #multithreading #pyqt #pyqt4
#python #многопоточность #pyqt #pyqt4
Вопрос:
Я создаю графический интерфейс PyQt4, который позволяет пользователю в qmainwindow вводить некоторые начальные параметры, а затем нажимать кнопку «Пуск», чтобы запустить программу. Когда они нажимают кнопку «Пуск», появляется новое окно, отображающее параметры, и программа запускается. Я бы хотел, чтобы пользователь мог запускать несколько экземпляров программы. Однако при изменении параметров в qmainwindow и повторном нажатии кнопки «Пуск» первое окно программы исчезает.
Есть ли способ, чтобы кнопка запуска вызывала второе окно, которое запускается одновременно с первым окном? Я предполагаю, что это будет что-то вроде потоковой передачи, но из того, что я прочитал, PyQt4, похоже, не имеет метода для потоковой передачи в приложении.
Любая помощь будет высоко оценена.
Комментарии:
1. Можете ли вы опубликовать какой-нибудь код, показывающий, что вы пробовали?
Ответ №1:
Я предполагаю, что вы сохраняете ссылку на вновь созданное окно в той же переменной. Если вы хотите создать несколько окон, попробуйте сохранить ссылку на это окно в отдельной переменной, т.е. Каждое окно должно иметь свою собственную ссылочную переменную.
def showWindow(self):
self.child = Window(self)
self.child.show()
Если это ваша ситуация, то первое окно потеряет свою ссылку, как только showWindow()
будет выполнено во второй раз. Потому self.child
что он будет содержать ссылку на второе окно, что приведет к закрытию первого окна, поскольку в первом окне нет ссылочной ссылки. Как только виджет потеряет ссылку в Qt, виджет будет уничтожен. Чтобы преодолеть эту проблему, поддерживайте список переменных:
# declare a list in __init__ as self.widgetList = []
def showWindow(self):
win = Window(self):
win.show()
self.widgetList.append(win)