PyCharm & QtDesigner

      在〈PyCharm & QtDesigner〉中尚無留言

前篇所述之指令

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

qtlayout_7

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

qtlayout_8

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

qtlayout_9

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進入

py_log1

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

py_log2

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *