pipinstallwxpython三、圖形化介紹……四、wx主要組件介紹1、fra" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python GUI圖形化編程wxpython的使用

系統(tǒng) 1781 0

一、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
          

三、圖形化介紹

python GUI圖形化編程wxpython的使用_第1張圖片 ……

四、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)
            
frame = wx.Frame(None) #實(shí)例化一個(gè)窗口
frame.Show()#調(diào)用窗口展示功能
app.MainLoop()#啟動(dòng)主循環(huán)

效果如下圖:  

python GUI圖形化編程wxpython的使用_第2張圖片

五、Gui編寫(xiě)簡(jiǎn)單實(shí)例

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

python GUI圖形化編程wxpython的使用_第3張圖片

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()
          

python GUI圖形化編程wxpython的使用_第4張圖片

六、尺寸器

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

python GUI圖形化編程wxpython的使用_第5張圖片

為了解決上述這個(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ě)

python GUI圖形化編程wxpython的使用_第6張圖片

            
#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)行變化。

python GUI圖形化編程wxpython的使用_第7張圖片 ?

python GUI圖形化編程wxpython的使用_第8張圖片

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久99热精品免费观看无卡顿 | 日韩 在线视频精品 | 一级毛片免费不卡在线 | 久久精品国产99国产精品 | 99精品免费在线观看 | 一级a俄罗斯毛片免费 | 一级香蕉免费毛片 | 亚洲视频aaa | jizz免费在线观看 | 亚洲国产精品综合久久 | 国产美女免费观看 | 欧美成人在线免费视频 | 亚洲国产精品专区 | 伊人网狠狠干 | 日本 a| 中文字幕一区中文亚洲 | 精品日本久久久久久久久久 | 欧美日韩国产一区二区三区 | 一级毛片视频免费 | 夜夜艹日日干 | 亚洲国产高清人在线 | 成人在线一区二区 | 亚洲国产精品久久久久婷婷老年 | 精品久久九九 | 日本视频久久 | 牛人盗摄一区二区三区视频 | 久久午夜激情 | 国产成人精品男人的天堂网站 | 午夜亚洲精品久久久久久 | 在线免费h | 国产精品国色综合久久 | 国产日产综合 | 五月天亚洲| 国产l精品国产亚洲区在线观看 | 一级成人a毛片免费播放 | 日日日干干干 | 欧美日韩在线成人免费 | 69日本xxxxxxxx59 | 久久久久久久国产精品视频 | 国产aⅴ精品一区二区三区久久 | 国产区精品福利在线观看精品 |