最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python GUI wxPython的相關(guān)知識整理

2022-06-28 10:01 作者:騰科IT教育官方賬號  | 我要投稿

一、wxPython的 wx.app


這是wx的應(yīng)用程序?qū)ο?,只有在這個對象創(chuàng)建以后,相應(yīng)的UI對象才可以被正確初始化。一般最后一句是 app.MainLoop(),形成消息循環(huán),否則程序?qū)⒅苯油顺觥?/p>



(一)app.MainLoop()?

應(yīng)用程序進(jìn)入消息循環(huán),如果不循環(huán),以計算機執(zhí)行代碼的速度,咱的程序會快成一道閃電,一閃而逝。你可能會有種感覺:這就完了?好像什么都沒發(fā)生過。


(二)Frame 其實就是窗體

其實 wx.Frame 可以傳入很多參數(shù),由此來控制生成窗體的樣式和行為,現(xiàn)在來看看 Frame構(gòu)造函數(shù)的原型:

init(self, Window parent, int id=-1, String title=EmptyString, 

Point pos=DefaultPosition, Size size=DefaultSize,?

long style=DEFAULT_FRAME_STYLE, String name=FrameNameStr)


· 參數(shù)1:parent
當(dāng)前窗口的父窗口,如果當(dāng)前窗口是top-level window的話,則parent=None,如果不是頂層窗口,則它的值為所屬frame的名字


?·?參數(shù)2:id
窗體編號。如果設(shè)置為-1,則系統(tǒng)自動給他分配一個編號。默認(rèn)為-1.


?·?參數(shù)3:title
窗體的標(biāo)題欄,即Caption。默認(rèn)為空。


?·?參數(shù)4:pos
窗體的位置坐標(biāo)。默認(rèn)值為(-1,-1),則窗體的位置由系統(tǒng)決定。


?·?參數(shù)5:size
窗體的大小。默認(rèn)值為(-1,-1),則窗體的大小由系統(tǒng)決定。


?·?參數(shù)6:style
窗體樣式。默認(rèn)值為 DEFAULT_FRAME_STYLE

默認(rèn)樣式 DEFAULT_FRAME_STYLE 是下面這些值的復(fù)合:
wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | 
wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN

它包括最小化按鈕、最大化按鈕、系統(tǒng)菜單、標(biāo)題欄、關(guān)閉按鈕、可變大小等等。您也可以根據(jù)自己的需求改變樣式,具體請參照幫助。


?·?參數(shù)7:name
窗體名稱。

可以看到,7個參數(shù)中6個都有默認(rèn)值,只有第一個參數(shù) parent 需要設(shè)置一下,所以一個最簡單的窗體就是:
frame = wx.Frame(None)


二、【wxPython】wx.font類字體


構(gòu)造函數(shù)形式為:

wx.Font(pointSize,family,style,weight,underline,faceName,encoding)


1. pointSize 是字體的以磅為單位的整數(shù)尺寸。


2. family 用于快速指定一個字體而無需知道該字體的實際的名字.字體的準(zhǔn)確選擇依賴于系統(tǒng)和具體可用的字體.你所得到的精確的字體將依賴于你的系統(tǒng)。字體類別如下:

?·?wx.DECORATIVE:一個正式的,老的英文樣式字體。

?·?wx.DEFAULT:系統(tǒng)默認(rèn)字體。

?·?wx.MODERN:一個單間隔(固定字符間距)字體。

?·?wx.ROMAN:serif字體,通常類似于Times New Roman。

?·?wx.SCRIPT:手寫體或草寫體。

?·?wx.SWISS:sans-serif字體,通常類似于Helvetica或Arial。


3. style 參數(shù)指明字體的是否傾斜,它的值有:

?·?wx.NORMAL,

?·?wx.SLANT,

?·?wx.ITALIC


4.?weight?參數(shù)指明字體的醒目程度,他的值有:

?·?wx.NORMAL, ? 普通字體

?·?wx.LIGHT, ? ?高亮字體

?·?wx.BOLD ?粗體


5. underline 參數(shù)僅工作在Windows系統(tǒng)下,如果取值為True,則加下劃線,F(xiàn)alse為無下劃線。


6. faceName 參數(shù)指定字體名。


7. encoding 參數(shù)允許你在幾個編碼中選擇一個,它映射內(nèi)部的字符和字本顯示字符。編碼不是Unicode編碼,只是用于wxPython的不同的8位編碼。大多數(shù)情況你可以使用默認(rèn)編碼。


三、wxPython幾種布局方式


(一)絕對布局


運行結(jié)果:


(二)使用Sizer來進(jìn)行布局優(yōu)勢


WxPython中有八種sizer供我們使用,分別是Sizer、WrapSizer、BoxSizer、GridSizer(網(wǎng)格布局)、FlexGridSizer(是GridSizer的一個更靈活的版本)、GridBagSizer(也是網(wǎng)格布局的一種)和StaticBoxSzer、StdDialogButtonSizer,我們主要對BoxSizer進(jìn)行學(xué)習(xí)。



我們在日常使用的時候一般使用BoxSizer、StaticBoxSizer、GridSizer和FlexGridSizer這四種,繼承Sizer中的方法。


BoxSizer布局:

我們可以將BoxSizer理解為一個容器或者一個箱子,里面的控件要么水平排列,要么豎直排列。而且BoxSizer之間也可以互相嵌套,從而實現(xiàn)一種非常靈活的布局方式。如圖所示:

box1 = wx.BoxSizer(wx.HORIZINTAL)????# 水平
box2 = wx.BoxSizer(wx.VERTICAL)?????# 垂直


代碼實現(xiàn):

import wx

class testBox(wx.Frame):
??def __init__(self,parent=None):
????wx.Frame.__init__(self,parent=parent)

????#生成12個按鈕
????btns = [wx.Button(self,label=str(i)) for i in range(13)]
????myStyle = wx.EXPAND|wx.ALL #設(shè)置裝填風(fēng)格

????#左側(cè)第一行的BoxSizer
????box1 = wx.BoxSizer()
????for i in range(3):
??????box1.Add(btns[i],1,myStyle,border=10)

????#左側(cè)第二行的BoxSizer
????box2 = wx.BoxSizer()
????for i in range(3,7):
??????box2.Add(btns[i],1,myStyle,border=10)

????#左側(cè)第三行的BoxSizer
????box3 = wx.BoxSizer()
????for i in range(7,12):
??????box3.Add(btns[i],1,myStyle,border=10)

????#左側(cè)BoxSizer,wx.VERTICAL表示這個BoxSizer為縱向
????leftBox = wx.BoxSizer(wx.VERTICAL)
????leftBox.Add(box1,1,myStyle,border=10)
????leftBox.Add(box2,1,myStyle,border=10)
????leftBox.Add(box3,1,myStyle,border=10)

????#總BoxSizer
????mainBox = wx.BoxSizer()
????mainBox.Add(leftBox,1,myStyle,border=10)
????mainBox.Add(btns[12],1,myStyle,border=10)

????#在框架中設(shè)置mainBox
????self.SetSizer(mainBox)

class Myapp(wx.app):
??def OnInit(self):
????self.SetappName("testbox")
????self.Frame = testBox()
????self.Frame.Show()
????return True

if __name__ == "__main__":
??test = Myapp()
??test.MainLoop()


四、wxpython 彈出框編程之 dialog(對話框)


wxpython 三種對話框示例:

1. 信息提示對話框:MessageDialog,先看看接口信息:

wxMessageDialog(wxWindow* parent, const wxString& message, const wxString& caption = "Message box", long style = wxOK | wxCANCEL, const wxPoint& pos = wxDefaultPosition)


其各參數(shù)不多做介紹,主要看看ShowModal()方法,它使用應(yīng)用程序在對話框關(guān)閉前不能響應(yīng)其它窗口的用戶事件,返回一個整數(shù),取值如下:

wx.ID_YES, wx.ID_NO, wx.ID_CANCEL, wx.ID_OK


另外,style的取值主要有以下幾種:



2. 輸入文本內(nèi)容對話框:wx.TextEntryDialog

3. 選擇對話框:wx.SingleChoiceDialog

4. 標(biāo)準(zhǔn)文件對話框:wx.FileDialog

5.?標(biāo)準(zhǔn)的顏色選擇器

Python GUI wxPython的相關(guān)知識整理的評論 (共 條)

分享到微博請遵守國家法律
石台县| 岑溪市| 同江市| 茌平县| 石狮市| 永胜县| 萨嘎县| 嘉禾县| 遂平县| 紫阳县| 兴化市| 咸宁市| 辽中县| 乐东| 无锡市| 柘城县| 卢龙县| 招远市| 墨江| 磐安县| 七台河市| 灯塔市| 东阿县| 富宁县| 郴州市| 策勒县| 宁陕县| 乌拉特前旗| 满洲里市| 汶上县| 肃南| 象州县| 汶川县| 阿拉善左旗| 旅游| 内黄县| 延庆县| 远安县| 桃源县| 库尔勒市| 沂水县|