[Python自學] PyQT5-pycharm中配置QTDesigner擴展工具


一、PyQt5第一個Demo

這是我們直接用代碼編寫的一個窗口demo程序:

import sys
# 導入QWidget和QApplication
from PyQt5.QtWidgets import QWidget, QApplication

if __name__ == '__main__':
    # 創建一個QApplication實例
    app = QApplication(sys.argv)
    # 創建一個窗口
    win = QWidget()
    # 設置窗口的尺寸
    win.resize(600, 400)
    # 移動窗口到指定的位置,開啟后的默認位置
    win.move(400, 400)
    # 設置窗口的標題
    win.setWindowTitle("這是第一個窗口程序")

    # 顯示窗口
    win.show()
    # 進入程序主循環,並通過exit函數確保主循環安全結束
    sys.exit(app.exec_())

后面我們可以直接使用QTDesigner來方便的布局和自動生成UI代碼。

二、使用QTdesigner

1.配置使用QTDesigner擴展工具

在pycharm的項目配置中配置擴展工具,將QTDesigner加入其中:

 

2.在pycharm中打開QTDesigner

 

或者:

 

此時,我們就可以使用QTDesigner來設計窗口了:

2.將ui文件轉換為py代碼

1)將ui文件轉化成py代碼

我們在QTDesigner中創建主窗口,然后將布局后的窗口保存為my.ui文件。然后將其拷貝到pycharm的項目目錄下:

然后我們使用命令,根據my.ui生成my.py文件:

python -m PyQt5.uic.pyuic d:\PycharmProjects\learn_pyqt5\my.ui -o d:\PycharmProjects\learn_pyqt5\my.py

可以看到,my.py已經生成:

 

查看一下my.py的具體內容:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 597)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.gridLayoutWidget.setGeometry(QtCore.QRect(170, 170, 371, 71))
        self.gridLayoutWidget.setObjectName("gridLayoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 1, 0, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 1, 1, 1, 1)
        self.pushButton_4 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout.addWidget(self.pushButton_4, 0, 1, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        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"))
        self.pushButton_2.setText(_translate("MainWindow", "PushButton"))
        self.pushButton_3.setText(_translate("MainWindow", "PushButton"))
        self.pushButton_4.setText(_translate("MainWindow", "PushButton"))

2)第二種方法

第一種方法是使用python運行PyQt5.uic.pyuic。

第二種方法是直接使用pyuic5命令:

 

注意,該命令在Anaconda3/pkgs/pyqt-5.9.2-py37h6538335_2/Library/bin下。

使用方法和第一種方法差不多:

pyuic5 d:\PycharmProjects\learn_pyqt5\my.ui -o d:\PycharmProjects\learn_pyqt5\my.py

3.將pyuic加入pycharm擴展工具中

然后就可以直接在ui文件上右鍵使用擴展工具生成py代碼了:

可以看到,生成了和前面一樣的my.py:

三、運行ui自動生成的窗口

在第二節中,我們已經生成了my.py代碼,那么我們將其運行起來:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

from my import Ui_MainWindow

if __name__ == '__main__':
    # 創建一個App實例
    app = QApplication(sys.argv)
    # 創建一個主窗口
    mainWin = QMainWindow()
    # 使用我們生成的UI窗口實例
    ui = Ui_MainWindow()
    # 將主窗口傳遞進去,讓Ui_MainWindow幫我們向主窗口上放置組件
    ui.setupUi(mainWin)
    # 顯示
    mainWin.show()

    # 主循環
    sys.exit(app.exec_())

注意,這里我們最好不要直接在my.py中進行編寫代碼,因為如果我們通過my.ui修改布局時,重新生成my.py代碼的時候可能會覆蓋我們已經編寫代碼的文件。所以,通過導入的形式來利用my.py是最好的。

運行test1.py,可以看到窗口效果:

 

====


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM