前篇所述之指令
Form, Window = uic.loadUiType("mainframe.ui")
使用uic.loadUiType 將 ui 檔解析, 轉成 Form, Window物件後, 再對其操作. 這種作法只是方便測試用而以, 實質意義並不大. 真正的作法, 必需將 ui 轉成 py檔, 再對其內的類別進行改寫.
ui to python
QtDesigner所產生的ui檔, 可以使用工具轉成python程式碼, 請於Dos命令列模式下達如下指令
python -m PyQt5.uic.pyuic -o d:\python\frist.py d:\python\frist.ui
或是使用如下指令
pyuic5 -o d:\python\frist.py d:\python\frist.ui
PyCharm完美搭配
在Dos下使用指令將 ui 轉成 python 檔案後, 再於python撰寫代碼進行操作, 會造成每次更改ui 就要到Dos下進行轉換一次. 所以PyCharm提出如下的操作方式
1. File/Setting/專案/Project Interpreter, 加入 PyQt5套件
2. 新增 PyUIC工具 :
此工具能將qt designer 儲存的 xml 檔案編譯成 .py檔。請依序設定如下
Program : 選取專案目錄下的 \venv\Scripts\pyuic5.exe
Arguments :
$FileName$ -o $FileNameWithoutExtension$.py
Working directory :
$ProjectFileDir$\ui

3. 於專案按右鍵/External Tools/QtDesigner, 此時就會啟動QtDesigner, 開始進行ui 配制, 配制完記得存檔, 請記得在檔名前加ui, 如ui_mainwindow.ui

4. 於ui_mainwindow.ui按右鍵/External Tools/PyUIC, 就會將ui_mainwindow.ui轉成ui_mainwindow.py檔案

5. 新增MainWindow.py檔案, 撰寫如下代碼
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import QCoreApplication
from ui.ui_mainwindow import *
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
#self.btnExit.clicked.connect(QCoreApplication.instance().quit)
if __name__ == "__main__":
app = QApplication(sys.argv)
mainwindow = MainWindow()
mainwindow.show()
app.exec()
6. 當然, 在每次更改ui後, 記得存檔, 並執行一次PyUIC進行轉換
啟動錯誤Log
Pycharm預設在執行PyQt5時不提示錯誤, 這樣就找不到那行出錯, 實在不方便.
要啟動除錯功能, 請由Run/Edit Configurations進入

然後把Emulate terminal in output console打勾. 如此就可以顯示錯誤Log.

