簡體   English   中英

PyQT5 Main window 導入語法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM