最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python GUI圖形化編程wxpython的使用

 更新時(shí)間:2019年07月19日 15:02:20   作者:苦逼工程師  
這篇文章主要介紹了python GUI圖形化編程wxpython的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、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 #窗口組件的名稱 
pos = None #組件的位置,就是組件左上角點(diǎn)距離父組件或者桌面左和上的距離 
size = None #組件的尺寸,寬高 
style = None #組件的樣式 
name = None #組件的名稱,也是用來標(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 #組件的名稱,也是用來標(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 #組件的名稱,也是用來標(biāo)識(shí)組件的,但是用于傳值

其它組件的參數(shù)類似

4、創(chuàng)建窗口基礎(chǔ)代碼

基本創(chuàng)建窗口代碼說明: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編寫簡(jiǎn)單實(shí)例

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

1、圖形化編寫

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 = "打開",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è)置文件打開時(shí)指定為utf8編碼,避免寫文件時(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):  # 定義打開文件事件

 path = path_text.GetValue()

 with open(path,"r",encoding="utf-8") as f: # encoding參數(shù)是為了在打開文件時(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 = "打開",pos = (370,5),size = (50,24))

open_button.Bind(wx.EVT_BUTTON,openfile) # 綁定打開文件事件到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)行拉伸,比較影響用戶體驗(yàn)。

為了解決上述這個(gè)問題,我們可以使用尺寸器進(jìn)行布局,類似于HTML的CSS樣式。

1、BoxSizer(尺寸器)

  • 尺寸器作用于畫布(panel)
  • 默認(rèn)水平布局
  • 垂直布局可以調(diào)整
  • 按照相對(duì)比例

2、步驟

  • 實(shí)例化尺寸器(可以是多個(gè))
  • 添加組件到不同尺寸器中
  • 設(shè)置相對(duì)比例、填充的樣式和方向、邊框等參數(shù)
  • 設(shè)置主尺寸器

3、將上面代碼通過尺寸器改寫

#coding:utf-8

import wx

 

def openfile(event):  # 定義打開文件事件

 path = path_text.GetValue()

 with open(path,"r",encoding="utf-8") as f: # encoding參數(shù)是為了在打開文件時(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 = "打開")

open_button.Bind(wx.EVT_BUTTON,openfile) # 綁定打開文件事件到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()

通過尺寸器進(jìn)行布局,無論寬體如何拉伸,內(nèi)部的組件都會(huì)按比例進(jìn)行變化。

 

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

相關(guān)文章

  • Python3中map(),reduce(),filter()的詳細(xì)用法

    Python3中map(),reduce(),filter()的詳細(xì)用法

    這篇文章主要介紹了Python3中map(),reduce(),filter()的詳細(xì)用法,Python3中的map()、reduce()、filter()?這3個(gè)一般是用于對(duì)序列進(jìn)行操作的內(nèi)置函數(shù),它們經(jīng)常需要與?匿名函數(shù)?lambda?聯(lián)合起來使用
    2022-08-08
  • Python處理電子表格的Pandas、OpenPyXL、xlrd和xlwt庫(kù)

    Python處理電子表格的Pandas、OpenPyXL、xlrd和xlwt庫(kù)

    在Python中處理表格數(shù)據(jù),有幾個(gè)非常流行且功能強(qiáng)大的庫(kù),Pandas在數(shù)據(jù)分析方面提供了廣泛的功能,而OpenPyXL、xlrd和xlwt則在處理Excel文件方面各有所長(zhǎng),以下是一些最常用的庫(kù)及其示例代碼
    2024-01-01
  • Python利用networkx畫圖繪制Les?Misérables人物關(guān)系

    Python利用networkx畫圖繪制Les?Misérables人物關(guān)系

    這篇文章主要為大家介紹了Python利用networkx畫圖處理繪制Les?Misérables悲慘世界里的人物關(guān)系圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python3 wechatpy微信支付的項(xiàng)目實(shí)踐

    python3 wechatpy微信支付的項(xiàng)目實(shí)踐

    本文主要介紹了python3 wechatpy微信支付的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • python Tornado事件循環(huán)示例源碼解析

    python Tornado事件循環(huán)示例源碼解析

    這篇文章主要為大家介紹了python Tornado事件循環(huán)示例源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Python模塊、包和發(fā)布模塊示例代碼

    Python模塊、包和發(fā)布模塊示例代碼

    模塊是python程序架構(gòu)的一個(gè)核心概念,模塊名同樣也是一個(gè)標(biāo)識(shí)符,需要符合標(biāo)識(shí)符的命名規(guī)則,接下來通過本文給大家講解Python模塊、包和發(fā)布模塊,需要的朋友可以參考下
    2023-01-01
  • 如何利用Python處理excel表格中的數(shù)據(jù)

    如何利用Python處理excel表格中的數(shù)據(jù)

    Excel做為職場(chǎng)人最常用的辦公軟件,具有方便、快速、批量處理數(shù)據(jù)的特點(diǎn),下面這篇文章主要給大家介紹了關(guān)于如何利用Python處理excel表格中數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Python之freegames?零代碼的22個(gè)小游戲集合

    Python之freegames?零代碼的22個(gè)小游戲集合

    這篇文章主要介紹了,Python之freegames?零代碼的22個(gè)小游戲集合,文章內(nèi)容詳細(xì),簡(jiǎn)單易懂,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2023-01-01
  • python使用Plotly繪圖工具繪制氣泡圖

    python使用Plotly繪圖工具繪制氣泡圖

    這篇文章主要為大家詳細(xì)介紹了python使用Plotly繪圖工具繪制氣泡圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • pycharm右鍵沒有run,run不了問題的解決

    pycharm右鍵沒有run,run不了問題的解決

    這篇文章主要介紹了pycharm右鍵沒有run,run不了問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論

麻栗坡县| 寿阳县| 陆河县| 尉氏县| 穆棱市| 县级市| 清河县| 郴州市| 习水县| 张家港市| 论坛| 缙云县| 清丰县| 和平县| 长沙市| 邻水| 容城县| 临汾市| 准格尔旗| 石台县| 呼和浩特市| 安平县| 乌兰察布市| 沁源县| 荔波县| 海伦市| 台东县| 阳山县| 穆棱市| 曲水县| 丰城市| 壶关县| 兖州市| 保德县| 汶川县| 霞浦县| 自治县| 军事| 夏津县| 泽普县| 永定县|