因此,我已经开始使用pyside学习python进行GUI开发,我一直在使用QT Designer来加快速度并将.ui文件转换为.py
我目前有一个“主窗口”用户界面和一个“关于”用户界面(主窗口已设置为主窗口,而“ about”是一个空对话框)
如何从主窗口打开“关于”对话框?
以下代码从我的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_()
一切正常,它打开了主窗口.在我的主窗口中,有一些菜单项,其中之一是用户单击时要“调出”的选项,我希望它弹出我创建的另一个对话框ui,我该怎么做?
在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对话框时,我不知道在该函数中放什么,如果有人可以帮助我,我也对插槽和连接感到困惑一些很好的示例代码.
编辑:
我弄清楚了代码的功能部分,仍然想出如何连接菜单,但是我连接了执行该方法的按钮按下,然后一切正常:
def openAbout(self):
aboutDialog = QtGui.QDialog(self)
aboutUi = about.About_Dialog()
aboutUi.setupUi(aboutDialog)
aboutDialog.show()
解决方法:
如果您的MainWindow有一个名为actionAbout的Menu操作,以及一个名为openAbout的插槽,那么您要做的就是将来自actionAbout的触发信号连接到插槽openAbout.
self.actionAbout.triggered.connect(self.openAbout)
该过程类似于您对按钮所做的操作.只需将本示例中使用的名称更改为应用程序中的名称即可.