1. 程式人生 > >eclipse將pyqt5將QtDesigner生成的ui檔案轉換為可執行的Python檔案

eclipse將pyqt5將QtDesigner生成的ui檔案轉換為可執行的Python檔案

pyqt5將QtDesigner生成的ui檔案轉換為可執行的Python檔案

python和pyqt5的安裝

Qt Designer的安裝

找到python的預設安裝目錄,每臺電腦都不一樣,如果實在找不到在下圖紅線圈出的位置輸入python進行查詢


在python預設安裝目錄下的Lib資料夾下找到site-packages資料夾並開啟,檢視有無designer.exe檔案,如果有直接開啟並跳到將ui檔案轉換為python檔案這一步。如果沒有找到,有兩種方法解決:

1、開啟cmd視窗,輸入pip3 install pyqt5-tools安裝designer.exe。


等待一會,就可安裝完成,然後在Python/Lib/site-packages/pyqt5-tools目錄下可找到designer.exe檔案,右鍵傳送到桌面快捷方式,以後就可以直接點選桌面上的快捷方式開啟designer.exe檔案。

2、如果安裝過qt creator的話,在C:\Qt\Qt5.8.0\5.8\mingw53_32\bin目錄下即可找到designer.exe檔案,右鍵傳送到桌面快捷方式,以後就可以直接點選桌面上的快捷方式開啟designer.exe檔案。


將ui檔案轉換成python檔案

開啟designer.exe,寫一個簡單的Hello pyqt5視窗程式


點選Widget,並點選建立按鈕


拖入一個label控制元件,並修改文字為“Hello pyqt5”


然後按下Ctrl+S,修改ui檔名並儲存。我是修改成了test名字並儲存到了F盤。


可以關閉designer.exe檔案了。然後開啟cmd視窗,輸入pyuic5並回車,如果安裝前面敘述的安裝方法,應該會出現下圖這種情況,表示pyuic5是一個可以識別的命令。


然後輸入pyuic5 -o 目標python檔案的絕對路徑 源ui檔案的絕對路徑 ,注意空格,我把目標python檔案也儲存在了F盤,並命名為test.py檔案。


我們就能看到F盤下生成了一個test.py檔案,開啟該檔案,我們可以看到以下內容


直接執行該檔案,你會發現什麼都沒有發生,這是因為我們只是建立了一個視窗類,還沒有例項化。在匯入包的部分新增程式碼

import sys

在檔案末尾新增程式碼

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_Form()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

新增完成後你會看到全部程式碼是這樣的:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'F:\test.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(140, 90, 171, 61))
        self.label.setObjectName("label")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "Hello pyqt5"))

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_Form()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

編譯執行之後:


哇,窗口出現了哦~(*^▽^*)

簡化轉換步驟

由於每次轉換都要寫一次命令列,十分麻煩,我們可以這樣操作來簡化步驟。建立一個txt檔案,向txt檔案中寫入pyuic5 -o test.py test.ui 文字(python檔案和ui檔名用什麼都可以)


然後在任意一個盤新建一個資料夾並命名,不妨在F盤下建立資料夾並命名為test,然後把該txt檔案儲存至該資料夾下並命名為test.txt,將test.txt副檔名改為bat。將ui檔案也移動到該資料夾下,並命名為test檔案中的ui檔名。


點選是。然後雙擊test.bat檔案,我們會看到dos黑視窗一閃而過,然後test資料夾下就自動生成了與test.ui檔案對應的test.py檔案


儲存好這個test.bat檔案,每次需要將ui檔案轉換成python檔案時,都可以把ui檔案命名為test.bat中的ui檔名然後移動至test資料夾下,雙擊直接執行test.bat檔案就可以直接生成python檔案了,是不是簡便很多了呢?(*^▽^*)