У меня есть основное диалоговое окно, и в этом диалоговом окне есть кнопка. Когда кнопка нажата, я хочу открыть другой диалог.Как вызвать несколько диалоговых окон в PyQt?
Main Dialog код (функция, которая вызывается при нажатии на кнопку в главном окне):
def add_host(self):
x=add_host.Ui_Dialog1()
x.main()
функция по умолчанию:
if __name__ == "__main__":
import sys
global app
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
Вторичный диалог (add_host.py) Код снимка:
def main(self):
app1 = QtGui.QApplication(sys.argv)
Dialog1 = QtGui.QDialog()
ui1 = Ui_Dialog1()
ui1.setupUi1(Dialog1)
Dialog1.show()
sys.exit(app.exec_())
Поэтому, когда я запускаю код, он открывает вторичное диалоговое окно, но когда я закрываю е, он просто замирает, и я получаю сообщение об ошибке:
File "testbot.py", line 175, in add_host
x.main()
File "/home/ppp/ppp/add_host.py", line 74, in main
sys.exit(app.exec_())
NameError: global name 'app' is not defined
Который имеет смысл, но я понятия не имею, как его решить. Я пробую несколько комбинаций без успеха, включая добавление и удаление app.exec_()
.
Я считаю, что это неправильно и ведет его по неправильному пути. Он не должен создавать несколько объектов QApplication. См. Мой ответ. – jdi
@jdi - согласился! - но немного сложно рассказать об этом контексте и фрагментах – hooblei
Я согласен, что его примеры кода немного запутывают. Но я думаю, вы действительно можете сказать, что он определяет свой другой модуль, чтобы также иметь метод main(), который устанавливает свой собственный QApp перед показом. – jdi