用Python寫介面--上位機開發
Python真的可以說是無所不能,上到人工智慧、影象識別、下到控制電機、爬蟲、資料處理,前不久發現Python還可以做介面,雖然比較醜,但是還是可以一試。
Python內建圖形介面庫——Tkinter
Tkinter 模組(Tk 介面)是 Python 的標準 Tk GUI 工具包的介面 .Tk 和 Tkinter 可以在大多數的 Unix 平臺下使用,同樣可以應用在 Windows 和 Mac 系統裡。也就是說用這個內建的寫的,在哪都能跑,接下來簡單說一下用法。
主要應用場景
用Python做介面,無非就是想要有一個影象化介面來輔助你的程式執行,我這個還要傳輸視訊,因此要對於我來說,常用的有以下幾個控制元件:
* Button 按鈕控制元件;在程式中顯示按鈕。
* Frame 框架控制元件;在螢幕上顯示一個矩形區域,多用來作為容器
* Label 標籤控制元件;可以顯示文字和點陣圖
* Menubutton 選單按鈕控制元件,由於顯示選單項。
* Menu 選單控制元件;顯示選單欄,下拉選單和彈出選單
* Message 訊息控制元件;用來顯示多行文字,與label比較類似
* Scrollbar 滾動條控制元件,當內容超過視覺化區域時使用,如列表框。.
* Text 文字控制元件;用於顯示多行文字
* tkMessageBox 用於顯示你應用程式的訊息框。
使用方法
通過我的學習,我覺得沒有什麼比實戰來的更簡單直接了,你看了我做的,照著寫,就能做個差不多的,然後再查一查API文件,基本就掌握了。
Hello World
from tkinter import *
class Application(Frame):
def say_hi(self):
print ("hi there, everyone!")
def createWidgets(self):
self.QUIT = Button(self)
self.QUIT["text"] = "QUIT"
self.QUIT["fg"] = "red"
self.QUIT["command"] = self.quit
self.QUIT.pack({"side": "left"})
self.hi_there = Button(self)
self.hi_there["text"] = "Hello",
self.hi_there["command"] = self.say_hi
self.hi_there.pack({"side": "left"})
def __init__ (self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()
注意,我的Python版本是基於3以上的,所以程式碼會和2版本有些不同。
總的來說,建立一個這樣的分為5步
1. 建立按鈕
2. 定義按鈕名稱
3. 定義按鈕屬性
4. 定義按鈕功能
5. 生成佈局
標籤、按鈕和滾動條
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from tkinter import *
#定義功能
def resize(ev=None):
label.config(font='Helvetica -%d bold' % scale.get())
#定義介面
top = Tk()
top.geometry()
#定義標籤及屬性
label = Label(top, text = 'hello world!', font = 'Helvetica -12 bold')
label.pack(fill=Y,expand=1)
#定義滾動條
scale = Scale(top, from_=10, to=40, orient=HORIZONTAL, command=resize)
scale.set(12)
scale.pack(fill=X, expand=1)
#定義推出標籤
quit = Button(top, text="QUIT", command=top.quit, activeforeground='white', activebackground='red')
quit.pack()
#執行主程式
mainloop()
小結
看了這些,基本上我的需求就都滿足了,但是後來我還是用了另外一個GUI工具,原因只有一點,大家可能注意到了,就是介面裡面各個控制元件的位置是通過程式碼來確定的,一兩個還好,而我的介面比較複雜,所以還是需要一個可以方便拖拽的工具,Tkiner也有,不過及其難用,所以忽略了。
PyQT
比較被認可的第三方工具主要是WxPython的PyQT,我大概看了一下,兩個的參考資料都不算多,wx是一個個人開發的,前一段時間停止更新了,後來又有大神接手,而PyQT是由QT轉過來的,公司產品,感覺比較好,最後用的PyQT,其實不管用哪個,都能達到你做一個小介面的目的。
安裝
PyQT安裝
QtDesigner安裝
QtDesigner簡單介紹
Qtdesigner是Python設計裡面一個非常實用的工具,使得人們編寫qt介面可以不僅僅是使用純程式碼,而可以在視覺化的基礎上設定,非常方便。
QtDesigner安裝
使用者安裝PyQt5後,系統會預設安裝QtDesigner工具。
QtDesigner的預設預設路徑: C:\python\python\Lib\site-packages\PyQt5\designer.exe
找不到搜尋一下
安裝PyQt5-tools
Python環境需要安裝designer。 在終端執行pip命令安裝完PyQt5-tools。
pip install PyQt5-tools
配置PyCharm
開啟Pycharm,然後按照下面路徑開啟Extrernal Tools:
File->Tools->Extrernal Tools->點選“+”號->彈出對話方塊,配置如下:
(1).增加QT設計介面“Qt Designer” —— 這個就是設計Qt介面的工具
- Program選擇PyQt安裝目錄中 designer.exe 的路徑
- Work directory 使用變數 (點選後面的…)
[圖片上傳失敗…(image-e81206-1526303573660)]
(2).增加“PyUIC” ——這個主要是用來將 Qt介面 轉換成 py程式碼
- Program選擇PyQt安裝目錄中 pyuic5.bat 的路徑
- parameters設定為 -o .py
- Work directory 設定為 (點選後面的…)
可以在tools裡面看到我們的工具
簡介
因為是第三方工具,所以又把一些功能做了整合,和分類,大概有以下常用模組(不常用的我沒寫。)
* QtCore:包含了核心的非GUI功能。此模組用於處理時間、檔案和目錄、各種資料型別、流、URL、MIME型別、執行緒或程序。
* QtGui包含類視窗系統整合、事件處理、二維圖形、基本成像、字型和文字。
* Qtwidgets模組包含創造經典桌面風格的使用者介面提供了一套UI元素的類。
* QtMultimedia包含的類來處理多媒體內容和API來訪問相機和收音機的功能。
* Qtwebsockets模組包含實現WebSocket協議類。
* QtWebKit包含一個基於Webkit2圖書館Web瀏覽器實現類。
* Qtwebkitwidgets包含的類的基礎webkit1一用於qtwidgets應用Web瀏覽器的實現。
* QtXml包含與XML檔案的類。這個模組為SAX和DOM API提供了實現。
* QtSql模組提供操作資料庫的類。
實戰
1. 開啟Pycharm的介面設計工具QTDsigner
Pycharm->Tools->External Tools->QTDesigner
2. 建立介面,選擇Wdiget
3. 分別在視窗新增如下控制元件,Lable、pushButton、checkBox、lineEdit如圖所示:
4. 做好佈局後,把檔案儲存到我們的專案目錄下
5. 把.ui檔案轉換成.py檔案
右鍵.ui使用PyUIC工具把.ui檔案轉換成.py檔案
生成的.py檔案
6. 測試我們的.py檔案:
在我們的login.py檔案下面新增
if __name__=="__main__":
import sys
app=QtWidgets.QApplication(sys.argv)
widget=QtWidgets.QWidget()
ui=Ui_form()
ui.setupUi(widget)
widget.show()
sys.exit(app.exec_())
好了,右鍵執行login.py。就可以看到登入介面了
小結
未完待續