1. 程式人生 > >第一個pycharm+pyqt5程式 (解決.ui檔案生成的.py檔案執行不出現介面問題)

第一個pycharm+pyqt5程式 (解決.ui檔案生成的.py檔案執行不出現介面問題)

一.環境搭建

二.使用QtDesigner生成UI檔案

Tools->External Tools->QtDesigner
這裡寫圖片描述

開啟後選擇mainWindow後隨便拖曳一些元件到窗體上,之後選擇儲存。儲存路徑到自己的工程目錄下
這裡寫圖片描述

三.使用pyUIC生成.py檔案

右鍵.ui檔案->External Tools->pyUIC,即可自動生成
這裡寫圖片描述

四.這個時候直接執行.py檔案,發現圖形介面不會顯示

1.直接執行這個檔案就能看到介面的方式

第一步:註釋掉三行程式碼,如圖:
這裡寫圖片描述
第二步:在檔案末尾加上這一段程式碼:

if __name__ == "__main__"
: import sys app = QtWidgets.QApplication(sys.argv) widget = QtWidgets.QWidget() ui = Ui_MainWindow() ui.setupUi(widget) widget.show() sys.exit(app.exec_())

第三步 右鍵run就可以看到介面啦!

解釋一下第二步的程式碼
if __name__ == "__main__"
用於判斷是否直接運行了該.py檔案。
modul(模組),也就是.py檔案。所有的模組都有一個內建屬性__name__

。如果 import 一個模組,那麼模組__name__的值通常為模組檔名,不帶路徑或者副檔名。但如果直接執行一個模組,那麼__name__的值是__main__

widget = QtWidgets.QWidget()
因為Qt Designer預設繼承的object類,不提供show()顯示方法,所以我們生成一個QWidget物件來過載我們設計的Ui_MainWindow類,達到顯示效果。

sys.exit(app.exec_())
app.exec_() ——執行app
sys.exit(app.exec_())——訊息迴圈結束之後返回0,接著呼叫sys.exit(0)退出程式

2.在別的檔案中呼叫這個模組

注意這個和前面所講的右鍵run就能顯示介面的方式並不衝突,只是要在別的檔案中呼叫這個模組。如果那三行程式碼不註釋掉的話依舊會無法顯示介面。

需要呼叫這個模組的檔案寫法:

import sys
from first import Ui_MainWindow  # 這裡的first是.ui檔案生成的.py檔名
from PyQt5 import QtWidgets

# 這個類繼承介面UI類
class mywindow(QtWidgets.QWidget, Ui_MainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.setupUi(self)

#呼叫show
if __name__=="__main__":
    app=QtWidgets.QApplication(sys.argv)
    myshow=mywindow()
    myshow.show()
    sys.exit(app.exec_())

在這個檔案中右鍵-run 介面也可以出現