欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

wxpython布局的實現(xiàn)方法

 更新時間:2019年11月01日 10:18:53   作者:微小冷  
這篇文章主要介紹了wxpython布局的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

我們目前已經(jīng)學會了四個控件,也編出了幾個窗口實例,它們都有一個共同的特點,就是丑,主要原因是沒有進行合理地布局。

此前的布局方式簡單粗暴,即明確規(guī)定每個控件的大小和位置,從而使之固定。這種布局方式可稱之為絕對定位布局,缺點是控件尺寸固定,并不會隨著窗口的放縮而同步變化。而且所有的控件都處于同一層次中,邏輯混亂,難于修改。

一個比較初級但很直觀的想法是,我們可不可以按照比例來調(diào)整控件的布局?我等菜鳥所能想到的需求,彼等大佬自然早已解決,BoxSizer便是為此而生。

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

在上圖中,第一步,將按鈕0、1、2裝進一個BoxSizer;將3、4、5、6裝入第二個BoxSizer;再將7-11裝入第三個BoxSizer。這三個BoxSizer都是橫向的。

第二步,將這三個BoxSizer裝入一個縱向的BoxSizer中。

第三步,再將這個縱向的BoxSizer與按鈕12裝入主BoxSizer中。于是這個布局便完成了。

其代碼如下,為了表現(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è)置裝填風格

    #左側(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()

wx.BoxSizer控件除了self之外,只有一個初始化參數(shù),即orient,默認為wx.HORIZONTAL,即橫向;如果輸入wx.VERTICAL,則為縱向。

wx.BoxSizer通過Add方法裝填控件,其常用的調(diào)用格式為:

Add (self, window, proportion=0, flag=0, border=0)
  • window為BoxSizer所裝填的控件
  • proportion聲明這個控件的尺寸是否隨著窗口的放縮而改變,如果改變的話其比例為多少
  • flag聲明裝填風格,如果想擁有多種風格,風格之間用"|"連接
  • border為邊界間隔

其中,proportion的參數(shù)為0時,表示尺寸不變;為正整數(shù)時,分別按照這個值的比例進行縮放。

Flags相對來說比較復(fù)雜,常用的可選值大致有三類,分別是聲明邊界、聲明對齊和聲明填充。

Add方法通過wx.TOP、wx.BOTTOM、wx.LEFT、wx.RIGHT、wx.ALL來聲明邊界。例如,如果選擇了wx.LEFT,即說明左側(cè)的邊界寬度為border。

Add通過wx.ALIGN_LEFT、wx.ALIGN_RIGHT、wx.ALIGN_RIGHT、wx.ALIGN_TOP、wx.ALIGN_BOTTOM、wx.ALIGN_CENTER來聲明對齊方式,如果選擇wx.ALIGN_LEFT,則表示左對齊。此外,對于居中而言,還支持水平或豎直的居中,字段為wx.ALIGN_CENTER_HORIZONTAL、wx.ALIGN_CENTER_VERTICAL。

wx.EXPAND是一個常用的值,表示裝載的控件將填充所有的剩余空間。一般來說,如果選了這個,那么proportion的值就不能為0了。

至此,我們就已經(jīng)有足夠的能力編寫出右側(cè)選項卡中的參數(shù)布局了,下面則考慮左側(cè)畫圖區(qū)的實現(xiàn)。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django配置跨域并開發(fā)測試接口

    Django配置跨域并開發(fā)測試接口

    這篇文章主要介紹了Django配置跨域并開發(fā)測試接口,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 基于Python編寫一個DOS命令輔助工具

    基于Python編寫一個DOS命令輔助工具

    在日常系統(tǒng)管理和維護工作中,執(zhí)行DOS(Disk?Operating?System)命令是一項必不可少的任務(wù),下面我們就來看看如何使用Python編寫一個簡單的DOS命令輔助工具,簡化系統(tǒng)管理任務(wù)吧
    2024-01-01
  • Python的生成器函數(shù)詳解

    Python的生成器函數(shù)詳解

    這篇文章主要介紹了Python的生成器函數(shù),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python3?chromedrivers簽到的簡單實現(xiàn)

    python3?chromedrivers簽到的簡單實現(xiàn)

    本文主要介紹了python3?chromedrivers簽到的簡單實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 實例講解Python爬取網(wǎng)頁數(shù)據(jù)

    實例講解Python爬取網(wǎng)頁數(shù)據(jù)

    這篇文章給大家通過實例講解了Python爬取網(wǎng)頁數(shù)據(jù)的步驟以及操作過程,有興趣的朋友跟著學習下吧。
    2018-07-07
  • Python如何利用opencv實現(xiàn)手勢識別

    Python如何利用opencv實現(xiàn)手勢識別

    這篇文章主要介紹了Python如何利用opencv實現(xiàn)手勢識別,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙可以參考一下
    2022-05-05
  • Python heapq庫案例詳解

    Python heapq庫案例詳解

    這篇文章主要介紹了Python heapq庫案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Django admin實現(xiàn)圖書管理系統(tǒng)菜鳥級教程完整實例

    Django admin實現(xiàn)圖書管理系統(tǒng)菜鳥級教程完整實例

    這篇文章主要介紹了Django admin實現(xiàn)圖書管理系統(tǒng)菜鳥級教程完整實例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python中使用Opencv開發(fā)停車位計數(shù)器功能

    Python中使用Opencv開發(fā)停車位計數(shù)器功能

    這篇文章主要介紹了Python中使用Opencv開發(fā)停車位計數(shù)器,本教程最好的一點就是我們將使用基本的圖像處理技術(shù)來解決這個問題,沒有使用機器學習、深度學習進行訓練來識別,感興趣的朋友跟隨小編一起看看吧
    2022-04-04
  • python interpolate插值實例

    python interpolate插值實例

    這篇文章主要介紹了python interpolate插值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論