前面幾篇的學習筆記中,對 wx.frame 已經有了乙個大概的了解,wx.frame 就是乙個窗體框架,他有標題欄、有客戶繪製區、有選單條、有工具條、有狀態列、可以最大最小化、可以改變尺寸等等。
但是,這個 wx.frame 窗體和 vb 、delphi 、winform 等等的窗體有一點不一樣的地方:一般情況下我們並不直接在窗體上放置控制項。
如果你直接將控制項放置在 wx.frame 上,則控制項的大小和位置設定都將不起作用,控制項將充滿整個 frame 的客戶區域,如果你放置兩個按鈕,則這兩個按鈕將共同填充整個客戶區域。
所以,一般情況下,我們會先放置乙個 wx.panel 面板在 frame 上面,同樣的,panel 將會充滿整個框架,然後我們再將按鈕、文字框等控制項放置在 panel 上,這樣就可以設定位置和大小了。
當然,如果我們要為每乙個控制項設定位置和大小是一件很繁瑣的事情,所以 wxpython 還提供了另外一種方法,就是現在 frame 放置布局管理器,布局管理器可以構造出很複雜的介面。
那麼我們如何將放置到窗體上呢?wxpython 所有視窗物件建構函式的第乙個引數總是乙個指向父視窗的引用。前面我們說過,frame 如果是頂層視窗,則第乙個可以傳入乙個 none,代表沒有父視窗。
如果要在 frame 上面放置乙個 panel ,則 panel 的第乙個引數傳入 frame ,說明 frame 是 panel 的父視窗,那麼 panel 就會出現在 frame 上面了。
同樣,如果要在 panel 上面放置乙個 button ,則 button 的第乙個引數傳入 panel ,那麼 button 就會出現在 panel 上面了。
下面看看 panel 的建構函式:
我們看到,除了第乙個引數 parent ,其他引數都有預設值,就像上面說過的,如果放置在 frame 上面,大小和尺寸我們設定了也沒用。
下面再看看 button 的建構函式:
同 panel 一樣,除了第乙個引數 parent ,其他引數都有預設值。
下面的**在 frame 上加入了 panel button 和 statictext 三個元件
**如下:
!/usr/bin/python2#
-*- coding: gbk -*-34
importwx5
6"""
7在窗體中新增其他部件
8"""910
class
myframe(wx.frame):
1112
def__init__
(self):
13wx.frame.
__init__
(self,parent
=none,id
=wx.id_any,title="
hello wxpython
",size=(
200,
160))14#
新增乙個面板
15#
第乙個引數 self ,代表父窗體為 myframe 的乙個物件例項
16panel
=wx.panel(
self
)1718
#新增乙個按鈕
19#
第乙個引數 panel ,代表父窗體為 panel ,按鈕將出現在 panel 之上
20wx.button(
panel
,wx.id_any,
"button
",pos=(
10,10),size=(
80,40))
2122
#新增乙個文字標籤23#
第乙個引數 panel ,代表父窗體為 panel ,文字標籤將出現在 panel 之上
24wx.statictext(panel,-1
,"this is the first line.\nthis is the second line.
",pos=(
10,80),size=(
160,
50))25#
居中26
self.center()27#
顯示28
self.show()
2930
if__name__=='
__main__':
31#初始化程式32=
33#建立窗體
34myframe() 35#
開始訊息迴圈36
wxPython 筆記(9)向窗體中加入控制項
前面幾篇的學習筆記中,對 wx.frame 已經有了乙個大概的了解,wx.frame 就是乙個窗體框架,他有標題欄 有客戶繪製區 有選單條 有工具條 有狀態列 可以最大最小化 可以改變尺寸等等。但是,這個 wx.frame 窗體和 vb delphi winform 等等的窗體有一點不一樣的地方 一...
wxPython 筆記(5)將窗體居中顯示
將窗體居中顯示,使用 wx.frame 的center 方法 可以在窗體初始化的時候呼叫,也可以在窗體物件建立以後,用窗體物件呼叫。下面的 是在窗體初始化的時候呼叫的,所以窗體物件建立後,一顯示出來就在居中的位置。如下 1 usr bin python2 coding gbk 34 importwx...
向C 的選項卡中新增自定義窗體
一.自定義窗體的搭建 這個比較簡單,新增乙個winform窗體就行了,設定乙個名字editpanel,然後在窗體上畫需要的控制項。二.將自定義窗體新增到選項卡 新建窗體加入到選項卡中 editpanel p1 new editpanel 這個就是自定義窗體 p1.formborderstyle fo...