自己的第一篇博客,好激動!
今天興致來了,就搗鼓了一下久見卻沒玩過的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”;然而最後切換目錄之後就可行了(沒有閃退)。