第一個pycharm+pyqt5程式 (解決.ui檔案生成的.py檔案執行不出現介面問題)
阿新 • • 發佈:2019-01-10
一.環境搭建
二.使用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__
__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 介面也可以出現