两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

我們在圖形界面開發(fā)的時候往往要面臨一個如何布局的問題,一個合理的布局能夠把有面積的使用最大化,也能幫助使用者更直觀的使用界面,我們使用wxPython的時候可以采用兩種布局的形式,一種是前面我們用到的絕對布局,也就是說我們所創(chuàng)建的控件的位置是固定不變的,無論窗口的大小如何變化,絕對布局的子窗口或者控件都是不變的,本節(jié)我們學習一種Sizer管理布局,它能幫助我們自動布局一組窗口控件。

WxPython中有八種sizer供我們使用,分別是Sizer、WrapSizer、BoxSizer、GridSizer、FlexGridSizer、GridBagSizer和StaticBoxSzer、StdDialogButtonSizer,我們主要對BoxSizer進行學習。

它的分類如圖:

         wxpython9

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

1. BoxSizer布局

BoxSizer布局是使用的幾種布局中最靈活簡便的一個,它的排布方式垂直或水平,一般是在創(chuàng)建的時候指定布局的方向。

my_box  =  wx.BoxSizer(wx.HORIZINTAL)
My_box  =  wx.BoxSizer(wx.VERTICAL)

上面的屬于水平布局,當括號中為空的時候即默認為水平布局,下面的為垂直方向的布局。

我們往布局中添加控件的時候,使用Add()方法,這個Add方法由wx.Sizer繼承而來,它的語法格式為:

Add(parent,proportion=0,flag=0,border=0,userData=None)

這種方式添加到父窗口parent當中。

Add(AnotherSizer,proportion=0,flag=0,border=0,userData=None)

這種方式添加到另外一個布局當中。

Add(AnotherSizer,proportion=0,flag=0,border=0,userData=None)

這種方式創(chuàng)建了一個新的空間。

其中flag為對齊、邊框和尺寸參數(shù),border為邊框?qū)挾取?strong>userData為數(shù)據(jù)的傳輸。

flag對齊標志有多種:

標志說明
ALIGN_TOP頂對齊
wx.ALIGN_LEFT左對齊
wx.ALIGN_BOTTOM底對齊
wx.ALIGN_RIGHT右對齊
wx.ALIGN_CENTER居中對齊
wx.ALIGN_CENTER_VERTIAL垂直居中對齊
wx.ALIGN_CENTER_HORIZONTAL水平居中對齊

邊框flag標志有:

標志說明
wx.TOP設置有頂部邊框,邊框的寬度需要通過Add()方法的border參數(shù)設置
wx.BOTTOM設置有底部邊框
wx.LEFT設置有左邊框
wx.RIGHT設置有右邊框
wx.ALL設置4面全有邊框

調(diào)整尺寸flag標志:

標志說明
wx.EXPAND 調(diào)整子窗口(或控件)完全填滿有效空間
wx.SHAPED調(diào)整子窗口(或控件)填充有效空間,但保存高寬比
wx.FIXED_MINSIZE調(diào)整子窗口(或控件)為最小尺寸
wx.RESERVE_SPACE_EVEN_IF_HIDDEN設置此標志后,子窗口(或控件)如果被隱藏,所占空間保留

我們來使用BoxSizer布局來創(chuàng)建一個登陸界面:

import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "登錄界面", size=(300, 300))
        panel = wx.Panel(self)#創(chuàng)建一個畫布,然后創(chuàng)建功能區(qū)并放到畫布上
        self.title = wx.StaticText(panel,label = '登陸界面')
        self.username = wx.StaticText(panel,label = '用戶:')
        self.user_name = wx.TextCtrl(panel,style = wx.TE_LEFT)
        self.userpassword = wx.StaticText(panel,label = '密碼:')
        self.user_password = wx.TextCtrl(panel,style = wx.TE_PASSWORD)
        self.button_login = wx.Button(panel,label = '登陸')
        self.button_register = wx.Button(panel,label = '注冊')
        container_one = wx.BoxSizer(wx.HORIZONTAL)  # 創(chuàng)建一個box容器并控制水平排列
        container_one.Add(self.username,proportion = 0,flag = wx.ALL,border = 7)
        container_one.Add(self.user_name,proportion = 1,flag = wx.ALL,border = 7)
        container_two = wx.BoxSizer(wx.HORIZONTAL)  # 創(chuàng)建一個box容器并控制水平排列
        container_two.Add(self.userpassword,proportion = 0,flag = wx.ALL,border = 7)
        container_two.Add(self.user_password,proportion = 1,flag = wx.ALL,border = 7)
        container_three = wx.BoxSizer(wx.HORIZONTAL)  # 創(chuàng)建一個box容器并控制水平排列
        container_three.Add(self.button_login,proportion = 0,flag = wx.ALIGN_CENTER,border = 4)
        container_three.Add(self.button_register,proportion =0,flag = wx.ALIGN_CENTER,border = 4)
        sizers = wx.BoxSizer(wx.VERTICAL)  
        sizers.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border=10)
        sizers.Add(container_one,proportion = 0,flag =wx.EXPAND|wx.LEFT|wx.RIGHT,border=40)
        sizers.Add(container_two, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=40)
        sizers.Add(container_three, proportion=0, flag=wx.ALIGN_CENTER|wx.TOP, border=10)
        panel.SetSizer(sizers)
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

輸出結果如圖:

wxpython10

對應下圖:

wxpython11

在這個例子中,我們主要使用了豎直和水平兩種布局,我們首先把用戶和輸入信息放入一個水平BoxSizer,然后把密碼和輸入信息放入一個BoxSizer,再把兩個按鈕放在一個BoxSizer,最后再把四種信息全部放到一個豎直的BoxSizer當中。

2. 總結

布局是我們圖形界面開發(fā)的重要一環(huán),就好比在建造房子之前是一定要設計好圖紙的,所以我們先設計布局再進行頁面開發(fā)。


點贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎C語言學練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導課程

Dotcpp在線編譯      (登錄可減少運行等待時間)