2013-07-31 4 views
3

Так я начал изучать питон с PySide для разработки GUI, я был с помощью конструктора QT для скорости и преобразования .ui файлов .pyОткрытие диалогового окна ребенка из главного окна с PySide

I в настоящее время есть «главное окно» ui и «about» ui (основное окно было настроено как основное окно, а около было пустое диалоговое окно)

Как открыть диалоговое окно из главного окна? Следующий код открывает главное окно из моего main.py

class MainWindow(QMainWindow, mainwindow.Ui_MainWindow): 
def __init__(self, parent=None): 
    super(MainWindow, self).__init__(parent) 
    self.setupUi(self) 

app = QApplication(sys.argv) 
form = MainWindow() 
form.show() 

app.exec_() 

, что все работает нормально, это открывает главное окно. В моем главном окне есть пункты меню, один из которых является «о» выбором, когда пользователь нажимает на него, я хочу, чтобы он открыл другой диалог, который я создал, как я могу это сделать?

В mainwindow.py (преобразованного из Ui) есть такие ссылки:

self.actionAbout_mailer_0_0_1 = QtGui.QAction(MainWindow) 
self.actionAbout_mailer_0_0_1.setObjectName("actionAbout_mailer_0_0_1") 
self.menuAbout.addAction(self.actionAbout_mailer_0_0_1) 

И about.py (конвертируется из Ui) выглядит следующим образом:

from PySide import QtCore, QtGui 

class About_Dialog(object): 
def setupUi(self, Dialog): 
    Dialog.setObjectName("Dialog") 
    Dialog.resize(400, 300) 
    self.aboutLbl = QtGui.QLabel(Dialog) 
    self.aboutLbl.setGeometry(QtCore.QRect(110, 40, 171, 16)) 
    self.aboutLbl.setObjectName("aboutLbl") 

    self.retranslateUi(Dialog) 
    QtCore.QMetaObject.connectSlotsByName(Dialog) 

def retranslateUi(self, Dialog): 
    Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) 
    self.aboutLbl.setText(QtGui.QApplication.translate("Dialog", "Mailer version 0.0.1 by .....", None, QtGui.QApplication.UnicodeUTF8)) 

Я полагаю, что мне нужно для создания новой функции внутри mainwindow.py, когда при вызове открывается диалоговое окно about, я не знаю, что добавить в эту функцию, я также смущен слотами и соединениями, если кто-то может помочь мне с некоторым примером кода, который было бы замечательно.

EDIT:

Я выяснил функцию часть кода, до сих пор выяснить, как подключиться к меню, но я подключен к нажатию кнопки, которая выполняет этот метод, который затем открывает все прекрасно:

def openAbout(self): 
    aboutDialog = QtGui.QDialog(self) 
    aboutUi = about.About_Dialog() 
    aboutUi.setupUi(aboutDialog) 
    aboutDialog.show() 

ответ

4

Если MainWindow есть действие меню с именем actionAbout и слот под названием OpenAbout, все, что вам нужно сделать, это подключить срабатывает сигнал от actionAbout в слот openAbout.

self.actionAbout.triggered.connect(self.openAbout) 

Процесс похож на то, что вы сделали с помощью кнопочной панели. Просто измените имена, используемые в этом примере, с именами в вашем приложении.

Смежные вопросы