一孙乖、Python GUI介紹
User Interface,簡稱 GUI逊抡,又稱圖形用戶接口荡含;是指采用圖形方式顯示的計算機操作用戶界面。
GUI圖形用戶界面(Graphical
User Interface甚垦,簡稱 GUI茶鹃,又稱圖形用戶接口;是指采用圖形方式顯示的計算機操作用戶界面艰亮。
Python 作為腳本語言闭翩,起初并不具備GUI工具,但由于本身具有良好的可拓展性迄埃,目前有相當(dāng)多的GUI在python中使用
Python 常用GUI控件集有PyQt男杈、Tkinter、wxPython调俘、PyGUI伶棒、Kivy。
其中PyQt是Qt為python專門提供的GUI擴(kuò)展彩库。
二肤无、常用GUI對比
三、PyQt介紹及開發(fā)實踐
PyQt 是一個用于創(chuàng)建GUI應(yīng)用程序的跨平臺的工具包骇钦,它將Python編程語言和Qt庫 成功融合在一起宛渐。QT庫目前是最強大的GUI庫之一。
PyQt可以運行在所有主流操作系統(tǒng)上,包括UNIX窥翩,Windows和Mac OS 业岁。
自從Qt移植到Python 上形成PyQt以來,已經(jīng)發(fā)出PyQt3寇蚊, PyQt4笔时, PyQt5
PyQt提供GPL版和商業(yè)版
(1)安裝:
Ubuntu下:
uPyqt庫: sudoapt-get install python-pyqt5
uQt-designer: sudo apt-get install qt5-designer
upyuic5 : sudo apt install pyqt5-dev-tools
uPyInstaller : pip install PyInstaller
Windows下:
進(jìn)入pip目錄(cd C:\Python34\Scripts)
PyQt5庫:
pip3install SIP
pip3install PyQt5
PyInstaller : pip install PyInstaller
(2)開發(fā)過程介紹(以下均以windows下為例)
1、Qt Designer 畫圖(Ctrl+R 預(yù)覽) .ui
2仗岸、.ui轉(zhuǎn)換為.py
方法:pyuic5 -o a.py a.ui
3允耿、邏輯文件視情況開發(fā)完成業(yè)務(wù)邏輯
4、pyinstaller 打包.py轉(zhuǎn)換為.exe(windows下可運行文件)
(3)Pyinstaller
Pyinstaller把python解釋器和腳本打包成一個可執(zhí)行文件扒怖,和編譯成真正的機器代碼是兩回事较锡。
打包后的可執(zhí)行文件不具備可移植性,若要在不同操作系統(tǒng)上運行盗痒,就必須在該系統(tǒng)上重新進(jìn)行打包
安裝: pip install PyInstaller
配置環(huán)境變量:
QT_QPA_PLATFORM_PLUGIN_PATH
C:\Python34\
不配置環(huán)境變量蚂蕴,點擊打包后的.exe運行Lib\site-packages\PyQt5\plugins
注:后直接閃退
提示:This application failed to start
because it could not find or load the Qt platform plugin “windows”.
打包命令:pyinstaller-F -pC:\python34;C:\Python34\Lib\site-packages\PyQt5; call_tools.py
?-F,-onfile .打包成一個.exe文件
?-p,依賴包所在文件
四、實踐代碼
(1)pyqt designer畫圖
(2)轉(zhuǎn)換為.py文件
pyuic5 -o firstPyQt51.py firstPyQt51.ui
生成的firstPyQt51.py如下
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 300)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(140, 60, 99, 27))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Form)
self.pushButton.clicked.connect(self.firtPyQt5_button_click)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton.setText(_translate("Form", "PushButton"))
#接下修改下firstPyQt5.py文件俯邓,主要是去實現(xiàn)slot函數(shù)掂墓,因為之前在QtDesigner里沒有實現(xiàn),讓它彈出一個消息框
def firtPyQt5_button_click(self):
QtWidgets.QMessageBox.information(self.pushButton,"標(biāo)題","這是第一個PyQt5 GUI程序")
(3)編寫執(zhí)行excute.py文件
excute.py內(nèi)容如下
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QWidget #導(dǎo)入相應(yīng)的包
from PyQt5.QtWidgets import QApplication , QMainWindow
from firstPyQt51 import *
if __name__ == '__main__':
"""
主函數(shù)
"""
app = QApplication(sys.argv)
#app = QApplication(sys.argv)看成,每一個pyqt程序必須創(chuàng)建一個application對象君编,
#sys.argv是命令行參數(shù),可以通過命令啟動的時候傳遞參數(shù)川慌。
mainWindow = QMainWindow()
#生成過一個實例(對象), mainWindow是實例(對象)的名字吃嘿,可以隨便起。
ui = Ui_Form()
ui.setupUi(mainWindow)
mainWindow.show() #用來顯示窗口
sys.exit(app.exec_())#exec_()方法的作用是“進(jìn)入程序的主循環(huán)直到exit()被調(diào)
(4)執(zhí)行python excute.py后點擊”PushButton"彈出以下界面
注意:如出現(xiàn)以下2個問題梦重,請檢查python兑燥,安裝模塊,電腦位數(shù)是否一致(64/32位)
ImportError: DLL load failed: %1 不是有效的 Win32 應(yīng)用程序
ImportError: DLL load failed: %1 找不到指定的模塊
出現(xiàn)以上問題琴拧,卸載后請安裝重試降瞳,再次執(zhí)行以下重試
1) 切換到python安裝目錄,cd C:\Python36
2) pip3 install SIP
3) pip3 install PyQt5
注意:電腦位數(shù)蚓胸,python 位數(shù)挣饥,PyQt5庫的位數(shù)對應(yīng)
以上歡迎指正~~~
參考書籍:PyQt5快速開發(fā)和實踐