Мне нужно вызвать форму (пользовательский диалог, созданный с помощью QtDesigner) через слот кнопки в главном окне (также в QtDesigned, отсюда отдельный файл). Ниже приведен соответствующий код:Невозможно вызвать специальный диалог из основного окна. PySide
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.btn.clicked.connect(self.my_func)
def my_func(self):
form = Form_UI.Custom_Dialog()
if form.exec_():
print "successfully opened"
Как всегда я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "F:\myPath\code.py", line 27, in my_func
if form.exec_():
AttributeError: 'Custom_Dialog' object has no attribute 'exec_'
Я не понимаю, потому что следующий код (с помощью встроенного в Dialog) работает просто отлично:
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.btn.clicked.connect(self.my_func)
def my_func(self):
form = QtGui.QDialog()
if form.exec_():
print "successfully opened"
Любая помощь будет оценена по достоинству. Заранее спасибо.
Удивительно, я очень ценю это. Спасибо. – Ryan
Но, я должен спросить, какая будет лучшая практика (или конвенция), вывести ее в файл ui или настроить, как указано выше? – Ryan
@Ryan Поскольку вы не можете редактировать сгенерированный файл, потому что любые изменения будут потеряны при вызове pyuic4 снова, я предполагаю, что вы имели в виду «... запись класса, который будет выводиться как из« QDialog », так и« Custom_Dialog »или для настройки как выше". Существует нет соглашения PyQt для выбора между этими двумя методами, кроме общего [«правила единой ответственности»] (http://en.wikipedia.org/wiki/Single_responsibility_principle), поэтому, в основном, если вам не нужно добавлять какие-либо логики для сгенерированного диалога (относительно сложное взаимодействие с пользователем или проверка ...), вышеуказанного кода должно быть достаточно. – alexisdm