python圖形開(kāi)發(fā)GUI庫(kù)wxpython使用方法詳解
一、python gui(圖形化)模塊介紹:
Tkinter :是python最簡(jiǎn)單的圖形化模塊,總共只有14種組建
Pyqt :是python最復(fù)雜也是使用最廣泛的圖形化
Wx :是python當(dāng)中居中的一個(gè)圖形化,學(xué)習(xí)結(jié)構(gòu)很清晰
Pywin :是python windows 下的模塊,攝像頭控制(opencv),常用于外掛制作
二、wx模塊的安裝:
C:\Users\Administrator> pip install wxpython
三、圖形化介紹


四、wx主要組件介紹
1、frame(窗口)
參數(shù):
parent = None #父元素,假如為None,代表頂級(jí)窗口
id = None #組件的標(biāo)識(shí),唯一,假如id為-1代表系統(tǒng)分配id
title = None #窗口組件的名稱(chēng)
pos = None #組件的位置,就是組件左上角點(diǎn)距離父組件或者桌面左和上的距離
size = None #組件的尺寸,寬高
style = None #組件的樣式
name = None #組件的名稱(chēng),也是用來(lái)標(biāo)識(shí)組件的,但是用于傳值
2、TextCtrl(文本框)
參數(shù):
parent = None #父元素,假如為None,代表頂級(jí)窗口
id = None #組件的標(biāo)識(shí),唯一,假如id為-1代表系統(tǒng)分配id
value = None #文本框當(dāng)中的內(nèi)容
GetValue #獲取文本框的值
SetValue #設(shè)置文本框的值
pos = None #組件的位置,就是組件左上角點(diǎn)距離父組件或者桌面左和上的距離
size = None #組件的尺寸,寬高
style = None #組件的樣式
validator = None #驗(yàn)證
name = None #組件的名稱(chēng),也是用來(lái)標(biāo)識(shí)組件的,但是用于傳值
3、Button(按鈕)
參數(shù):
parent = None #父元素,假如為None,代表頂級(jí)窗口
id = None #組件的標(biāo)識(shí),唯一,假如id為-1代表系統(tǒng)分配id
lable = None #按鈕的標(biāo)簽
pos = None #組件的位置,就是組件左上角點(diǎn)距離父組件或者桌面左和上的距離
size = None #組件的尺寸,寬高
style = None #組件的樣式
validator = None #驗(yàn)證
name = None #組件的名稱(chēng),也是用來(lái)標(biāo)識(shí)組件的,但是用于傳值
其它組件的參數(shù)類(lèi)似
4、創(chuàng)建窗口基礎(chǔ)代碼
基本創(chuàng)建窗口代碼說(shuō)明:
import wx #引入wx模塊 app = wx.App() #實(shí)例化一個(gè)主循環(huán)<br> frame = wx.Frame(None) #實(shí)例化一個(gè)窗口<br> frame.Show()#調(diào)用窗口展示功能<br> app.MainLoop()#啟動(dòng)主循環(huán)
效果如下圖:

五、Gui編寫(xiě)簡(jiǎn)單實(shí)例
實(shí)現(xiàn)如下一個(gè)GUI界面,在上面文本框中輸入文本文件地址,點(diǎn)擊“打開(kāi)”按鈕后將文本文件內(nèi)容顯示在下面的文本框中。

1、圖形化編寫(xiě)
import wx app = wx.App() frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400)) path_text = wx.TextCtrl(frame,pos = (5,5),size = (350,24)) open_button = wx.Button(frame,label = "打開(kāi)",pos = (370,5),size = (50,24)) save_button = wx.Button(frame,label = "保存",pos = (430,5),size = (50,24)) content_text= wx.TextCtrl(frame,pos = (5,39),size = (475,300),style = wx.TE_MULTILINE) # wx.TE_MULTILINE可以實(shí)現(xiàn)換行功能,若不加此功能文本文檔顯示為一行顯示 frame.Show() app.MainLoop()
2、事件綁定
1、定義事件函數(shù)
事件函數(shù)有且只有一個(gè)參數(shù),叫event
def openfile(event):
path = path_text.GetValue()
with open(path,"r",encoding="utf-8") as f: #encoding 設(shè)置文件打開(kāi)時(shí)指定為utf8編碼,避免寫(xiě)文件時(shí)出現(xiàn)編碼錯(cuò)誤
content_text.SetValue(f.read())
2、綁定出發(fā)事件的條件和組件
open_button.Bind(wx.EVT_BUTTON,openfile)
3、完整代碼
#coding:utf-8
import wx
def openfile(event): # 定義打開(kāi)文件事件
path = path_text.GetValue()
with open(path,"r",encoding="utf-8") as f: # encoding參數(shù)是為了在打開(kāi)文件時(shí)將編碼轉(zhuǎn)為utf8
content_text.SetValue(f.read())
app = wx.App()
frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400))
path_text = wx.TextCtrl(frame,pos = (5,5),size = (350,24))
open_button = wx.Button(frame,label = "打開(kāi)",pos = (370,5),size = (50,24))
open_button.Bind(wx.EVT_BUTTON,openfile) # 綁定打開(kāi)文件事件到open_button按鈕上
save_button = wx.Button(frame,label = "保存",pos = (430,5),size = (50,24))
content_text= wx.TextCtrl(frame,pos = (5,39),size = (475,300),style = wx.TE_MULTILINE)
# wx.TE_MULTILINE可以實(shí)現(xiàn)以滾動(dòng)條方式多行顯示文本,若不加此功能文本文檔顯示為一行
frame.Show()
app.MainLoop()

六、尺寸器
按照上面的GUI代碼有一個(gè)缺陷,由于我們各個(gè)組件都固定了大小,因此在框體拉伸時(shí),對(duì)應(yīng)的組件不會(huì)對(duì)應(yīng)進(jìn)行拉伸,比較影響用戶(hù)體驗(yàn)。

為了解決上述這個(gè)問(wèn)題,我們可以使用尺寸器進(jìn)行布局,類(lèi)似于HTML的CSS樣式。
1、BoxSizer(尺寸器)
- 尺寸器作用于畫(huà)布(panel)
- 默認(rèn)水平布局
- 垂直布局可以調(diào)整
- 按照相對(duì)比例
2、步驟
- 實(shí)例化尺寸器(可以是多個(gè))
- 添加組件到不同尺寸器中
- 設(shè)置相對(duì)比例、填充的樣式和方向、邊框等參數(shù)
- 設(shè)置主尺寸器
3、將上面代碼通過(guò)尺寸器改寫(xiě)

#coding:utf-8
import wx
def openfile(event): # 定義打開(kāi)文件事件
path = path_text.GetValue()
with open(path,"r",encoding="utf-8") as f: # encoding參數(shù)是為了在打開(kāi)文件時(shí)將編碼轉(zhuǎn)為utf8
content_text.SetValue(f.read())
app = wx.App()
frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400))
panel = wx.Panel(frame)
path_text = wx.TextCtrl(panel)
open_button = wx.Button(panel,label = "打開(kāi)")
open_button.Bind(wx.EVT_BUTTON,openfile) # 綁定打開(kāi)文件事件到open_button按鈕上
save_button = wx.Button(panel,label = "保存")
content_text= wx.TextCtrl(panel,style = wx.TE_MULTILINE)
# wx.TE_MULTILINE可以實(shí)現(xiàn)以滾動(dòng)條方式多行顯示文本,若不加此功能文本文檔顯示為一行
box = wx.BoxSizer() # 不帶參數(shù)表示默認(rèn)實(shí)例化一個(gè)水平尺寸器
box.Add(path_text,proportion = 5,flag = wx.EXPAND|wx.ALL,border = 3) # 添加組件
#proportion:相對(duì)比例
#flag:填充的樣式和方向,wx.EXPAND為完整填充,wx.ALL為填充的方向
#border:邊框
box.Add(open_button,proportion = 2,flag = wx.EXPAND|wx.ALL,border = 3) # 添加組件
box.Add(save_button,proportion = 2,flag = wx.EXPAND|wx.ALL,border = 3) # 添加組件
v_box = wx.BoxSizer(wx.VERTICAL) # wx.VERTICAL參數(shù)表示實(shí)例化一個(gè)垂直尺寸器
v_box.Add(box,proportion = 1,flag = wx.EXPAND|wx.ALL,border = 3) # 添加組件
v_box.Add(content_text,proportion = 5,flag = wx.EXPAND|wx.ALL,border = 3) # 添加組件
panel.SetSizer(v_box) # 設(shè)置主尺寸器
frame.Show()
app.MainLoop()
通過(guò)尺寸器進(jìn)行布局,無(wú)論寬體如何拉伸,內(nèi)部的組件都會(huì)按比例進(jìn)行變化。


更多關(guān)于python圖形開(kāi)發(fā)GUI庫(kù)wxpython使用方法請(qǐng)查看下面的相關(guān)鏈接
相關(guān)文章
python批量檢查兩個(gè)對(duì)應(yīng)的txt文件的行數(shù)是否一致的實(shí)例代碼
這篇文章主要介紹了python批量檢查兩個(gè)對(duì)應(yīng)的txt文件的行數(shù)是否一致,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
python連接mongodb密碼認(rèn)證實(shí)例
今天小編就為大家分享一篇python連接mongodb密碼認(rèn)證實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
python PaddleOCR庫(kù)用法及知識(shí)點(diǎn)詳解
在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python PaddleOCR庫(kù)用法及知識(shí)點(diǎn)詳解內(nèi)容,對(duì)此有需要的朋友們可以學(xué)習(xí)參考下。2021-07-07
python實(shí)現(xiàn)excel轉(zhuǎn)置問(wèn)題詳解
這篇文章主要介紹了python實(shí)現(xiàn)excel轉(zhuǎn)置問(wèn)題詳解,excel轉(zhuǎn)置分為兩種情況,一個(gè)是較為簡(jiǎn)單的只需要行轉(zhuǎn)列,列轉(zhuǎn)行,具體詳解,感興趣的小伙伴可以參考一下2022-09-09
python導(dǎo)入坐標(biāo)點(diǎn)的具體操作
在本篇文章里小編給大家分享了關(guān)于python導(dǎo)入坐標(biāo)點(diǎn)的具體操作步驟和圖解,有需要的朋友們跟著學(xué)習(xí)下。2019-05-05
python3新特性函數(shù)注釋Function Annotations用法分析
這篇文章主要介紹了python3新特性函數(shù)注釋Function Annotations用法,結(jié)合實(shí)例形式分析了Python3函數(shù)注釋的定義方法與使用技巧,需要的朋友可以參考下2016-07-07

