PyQt5 Demo 第一次嘗試

自己的第一篇博客,好激動!

今天興致來了,就搗鼓了一下久見卻沒玩過的PyQt,在此做個小筆記,便於今後查找使用。


 1 安裝包

安裝pyqt5、pyqt5-tools、pyinstaller。

可以在C:\ProgramData\Anaconda3\envs\newroot\Lib\site-packages\pyqt5_tools下找到designer.exe。

但在安裝包的過程中,注意pyqt5、pyqt5-tools的版本,否則會導致spyder無法打開。我先裝的5.14,後來降到5.10纔可以用。


pip install pyqt5==5.10.1

pip install pyqt5-tools==5.10.1.1.4

pip install pyinstaller

2 界面設計

個人感覺與C#沒有本質區別,暫時只實驗了Button,其他的等以後實驗過後再詳細記錄。

3 Spyder編輯

.ui轉爲.py後纔可以使用Spyder編輯。

#.ui轉.py
pyuic5 -o I:\1實驗室\其他\QTtest\untitled.py I:\1實驗室\其他\QTtest\untitled.ui

新建.py文件,在其中添加如下代碼纔可使用Spyder運行GUI。QtWidgets.QDialog中的QDialog需要換爲適合於你所涉及的GUI窗體,否則會報錯;from untitled import Ui_Dialog中,untitled爲窗體文件的文件名,Ui_Dialog爲窗體名稱,記得切換Spyder的路徑爲untitled.ui所在路徑;self.btn_ok.clicked.connect(self.printWords)爲自己建的Button調用printWords函數,這一步非必須,是自己添加的。

from PyQt5 import QtWidgets
from untitled import Ui_Dialog

class mywindow(QtWidgets.QDialog, Ui_Dialog):
    def  __init__ (self):
        super(mywindow, self).__init__()
        self.setupUi(self)
        self.btn_ok.clicked.connect(self.printWords)
        
    def printWords(self):
        #顯示文字
        words = "finished!"
        self.label.setText(words)

if __name__=="__main__":
    import sys
    app=QtWidgets.QApplication(sys.argv)
    ui = mywindow()    
    ui.show()
    sys.exit(app.exec_())

4 封裝


#.exe可執行文件的封裝
# -F:將所有內容全部打包成一個exe可執行文件。
# -w:運行生成的exe文件時,不會彈出命令行窗口,而是直接彈出GUI。
pyinstaller -F -w I:\1實驗室\其他\QTtest\run.py

封裝的時候出現閃退和360提示阻止信息,建議添加信任之後再重新執行封裝;閃退可能是由於Dos沒有切換到源代碼的路徑導致的。

看到有的小夥伴說,複製plugins/Platforms的文件到.exe文件旁,但我測試了還是沒有用;添加input及os.system("pause")也沒有用,還報錯“faild execute script run”;然而最後切換目錄之後就可行了(沒有閃退)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章