【发布时间】:2021-03-05 19:08:01
【问题描述】:
我想创建一个简单的按钮来触发一些任务。我正在使用 PyQt 设计器构建 GUI,并尝试遵循不直接编辑 UI 模块而是将我的自定义代码放在单独的模块中然后继承所有 GUI 方面的建议。
这是我的 GUI 类:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(507, 424)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(220, 350, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
这是我的自定义模块:
from PyQt5 import QtCore,QtGui,QtWidgets
# main.py is the GUI module
import main
class mainWindow(mainTest.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
# I want click this button and print something
self.pushButton.clicked.connect(self.connectionTest)
def connectionTest(self):
print('connected')
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = mainTest.Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
现在我的问题是当我运行模块并单击按钮时,它不会触发打印方法。但是,如果我直接在 GUI 模块中添加我的自定义代码,它将起作用。我认为继承有问题,我对此感到有些困惑。那么这里有什么问题?
【问题讨论】:
-
将
MainWindow = QtWidgets.QMainWindow()ui = mainTest.Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()更改为w = mainWindow()w.show() -
您已经创建了 mainWindow 类,但从未使用它。
-
也改成
class mainWindow(QtWidgets.QMainWindow, mainTest.Ui_MainWindow):
标签: python inheritance pyqt5 qtgui qt-signals