[英]PyQT5 Main window import syntax
我將以下代碼保存在一個名為 Main_Win.py 的文件中,該文件來自 PyQt5 設計,不應進行編輯。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Main_Win.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1500, 700)
MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("monkey.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.display_data = QtWidgets.QLabel(self.centralwidget)
self.display_data.setGeometry(QtCore.QRect(50, 110, 1381, 361))
self.display_data.setAlignment(QtCore.Qt.AlignCenter)
self.display_data.setObjectName("display_data")
self.pause_button = QtWidgets.QPushButton(self.centralwidget)
self.pause_button.setGeometry(QtCore.QRect(490, 560, 131, 51))
self.pause_button.setObjectName("pause_button")
self.play_button = QtWidgets.QPushButton(self.centralwidget)
self.play_button.setGeometry(QtCore.QRect(860, 560, 131, 51))
self.play_button.setObjectName("play_button")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1500, 21))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
self.menuOptions = QtWidgets.QMenu(self.menubar)
self.menuOptions.setObjectName("menuOptions")
self.menuAbout = QtWidgets.QMenu(self.menubar)
self.menuAbout.setObjectName("menuAbout")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionOpen_Learning_Package = QtWidgets.QAction(MainWindow)
self.actionOpen_Learning_Package.setObjectName("actionOpen_Learning_Package")
self.actionExit_Ctrl_Q = QtWidgets.QAction(MainWindow)
self.actionExit_Ctrl_Q.setObjectName("actionExit_Ctrl_Q")
self.actionChange_Font = QtWidgets.QAction(MainWindow)
self.actionChange_Font.setObjectName("actionChange_Font")
self.actionChange_Font_Color = QtWidgets.QAction(MainWindow)
self.actionChange_Font_Color.setObjectName("actionChange_Font_Color")
self.actionChange_Words_Per_Minute = QtWidgets.QAction(MainWindow)
self.actionChange_Words_Per_Minute.setObjectName("actionChange_Words_Per_Minute")
self.actionCreate_Learning_Package = QtWidgets.QAction(MainWindow)
self.actionCreate_Learning_Package.setObjectName("actionCreate_Learning_Package")
self.actionVersion_1_1 = QtWidgets.QAction(MainWindow)
self.actionVersion_1_1.setObjectName("actionVersion_1_1")
self.menuFile.addAction(self.actionOpen_Learning_Package)
self.menuFile.addAction(self.actionExit_Ctrl_Q)
self.menuOptions.addAction(self.actionChange_Font)
self.menuOptions.addAction(self.actionChange_Font_Color)
self.menuOptions.addAction(self.actionChange_Words_Per_Minute)
self.menuOptions.addAction(self.actionCreate_Learning_Package)
self.menuAbout.addAction(self.actionVersion_1_1)
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuOptions.menuAction())
self.menubar.addAction(self.menuAbout.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Ultra-Fast Conceptualizer"))
self.display_data.setText(_translate("MainWindow", "TextLabel"))
self.pause_button.setText(_translate("MainWindow", "Pause ||"))
self.play_button.setText(_translate("MainWindow", "Play "))
self.menuFile.setTitle(_translate("MainWindow", "File"))
self.menuOptions.setTitle(_translate("MainWindow", "Options"))
self.menuAbout.setTitle(_translate("MainWindow", "About"))
self.actionOpen_Learning_Package.setText(_translate("MainWindow", "Open Learning Package"))
self.actionExit_Ctrl_Q.setText(_translate("MainWindow", "Exit (Ctrl+Q)"))
self.actionChange_Font.setText(_translate("MainWindow", "Change Font"))
self.actionChange_Font_Color.setText(_translate("MainWindow", "Change Font Color"))
self.actionChange_Words_Per_Minute.setText(_translate("MainWindow", "Change Words Per Minute"))
self.actionCreate_Learning_Package.setText(_translate("MainWindow", "Create Learning Package"))
self.actionVersion_1_1.setText(_translate("MainWindow", "Version 1.1"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
然后我有我的主應用程序文件,我試圖從中導入 PyQt5 文件。 下面的代碼
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtCore as qtc
from PyQt5 import QtGui as qtg
from Main_Win import Ui_MainWindow
class MainWindow(qtw.QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
#self.ui = Ui_MainWindow()
#self.ui.setupUi(self)
self.play_button.clicked.connect(play_button_clicked)
def play_button_clicked(self):
print('woohoo this worked')
sys.exit()
if __name__ == "__main__":
import sys
app = qtw.QApplication(sys.argv)
MainWindow = qtw.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
我現在正在嘗試調用按鈕單擊以打印語句並退出應用程序,但似乎我無法正確執行此操作。 有誰能幫助我並向我解釋撥打此電話的正確程序應該是什么?
您沒有使用MainWindow
class; 事實上,您也在覆蓋該名稱(另請注意,變量名稱不應以大寫字母開頭,因為只有常量和類的名稱才應大寫)。
class MainWindow(qtw.QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# note: the button is a member of self.ui
self.ui.play_button.clicked.connect(play_button_clicked)
def play_button_clicked(self):
print('woohoo this worked')
# you should not directly use sys.exit from a widget
qtw.QApplication.quit()
if __name__ == "__main__":
import sys
app = qtw.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
請注意,您甚至可以使用多個 inheritance:
class MainWindow(qtw.QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setupUi(self)
# in this case, the button is a direct member of the class
self.play_button.clicked.connect(play_button_clicked)
在有關使用 Designer的官方指南中了解有關正確使用 ui 文件的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.