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

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

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

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

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

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

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

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

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

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

其代碼如下,為了表現(xiàn)清晰,所以并沒(méi)有寫(xiě)得很精簡(jiǎn)。

import wx

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

    #生成12個(gè)按鈕
    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表示這個(gè)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之外,只有一個(gè)初始化參數(shù),即orient,默認(rèn)為wx.HORIZONTAL,即橫向;如果輸入wx.VERTICAL,則為縱向。

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • 使用Flink與Python進(jìn)行實(shí)時(shí)數(shù)據(jù)處理的基本步驟

    使用Flink與Python進(jìn)行實(shí)時(shí)數(shù)據(jù)處理的基本步驟

    Apache Flink是一個(gè)流處理框架,用于實(shí)時(shí)處理和分析數(shù)據(jù)流,PyFlink是Apache Flink的Python API,它允許用戶(hù)使用Python語(yǔ)言來(lái)編寫(xiě)Flink作業(yè),進(jìn)行實(shí)時(shí)數(shù)據(jù)處理,以下是如何使用Flink與Python進(jìn)行實(shí)時(shí)數(shù)據(jù)處理的基本步驟,需要的朋友可以參考下
    2024-09-09
  • 利用PyCharm操作Github(倉(cāng)庫(kù)新建、更新,代碼回滾)

    利用PyCharm操作Github(倉(cāng)庫(kù)新建、更新,代碼回滾)

    這篇文章主要介紹了利用PyCharm操作Github(倉(cāng)庫(kù)新建、更新,代碼回滾),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • django中使用Celery 布式任務(wù)隊(duì)列過(guò)程詳解

    django中使用Celery 布式任務(wù)隊(duì)列過(guò)程詳解

    這篇文章主要介紹了django中使用Celery 布式任務(wù)隊(duì)列實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 利用Python查看微信共同好友功能的實(shí)現(xiàn)代碼

    利用Python查看微信共同好友功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了利用Python查看微信共同好友功能的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04
  • python?pycharm安裝第三方包失敗(使用pip安裝失敗)的解決方案

    python?pycharm安裝第三方包失敗(使用pip安裝失敗)的解決方案

    這篇文章主要給大家介紹了關(guān)于python?pycharm安裝第三方包失敗(使用pip安裝失敗)的解決方案,文中將可能遇到的幾種情況都進(jìn)行了分析并給出了詳細(xì)的解決方案,需要的朋友可以參考下
    2023-11-11
  • Python flask框架端口失效解決方案

    Python flask框架端口失效解決方案

    這篇文章主要介紹了Python flask框架端口失效解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python中的sys.stdout重定向解讀

    python中的sys.stdout重定向解讀

    這篇文章主要介紹了python中的sys.stdout重定向,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python提取支付寶和微信支付二維碼的示例代碼

    Python提取支付寶和微信支付二維碼的示例代碼

    本文將教你使用 Python 的圖像處理庫(kù) pillow,輕松批量提取圖片中間的方形二維碼部分。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • python pandas模塊基礎(chǔ)學(xué)習(xí)詳解

    python pandas模塊基礎(chǔ)學(xué)習(xí)詳解

    這篇文章主要介紹了python pandas模塊基礎(chǔ)學(xué)習(xí)詳解的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 女神相冊(cè)密碼忘記了 我只用Python寫(xiě)了20行代碼

    女神相冊(cè)密碼忘記了 我只用Python寫(xiě)了20行代碼

    這篇文章主要介紹了怎么樣用Python寫(xiě)了20行代碼來(lái)破解找回已經(jīng)忘記的密碼,密碼的排列組合是有限的,遍歷嘗試就能夠試出正確的密碼,但這個(gè)工作要怎么用python實(shí)現(xiàn),請(qǐng)看下文
    2021-08-08

最新評(píng)論

通许县| 南丹县| 包头市| 南川市| 绥滨县| 康保县| 临沂市| 马龙县| 磐安县| 弥渡县| 白朗县| 兴化市| 高尔夫| 财经| 西乌| 政和县| 哈尔滨市| 静安区| 德安县| 邻水| 西青区| 克山县| 博客| 张家川| 当雄县| 浏阳市| 乐业县| 原阳县| 宜兰市| 绥江县| 宜黄县| 营口市| 贵德县| 平武县| 龙岩市| 民勤县| 旺苍县| 五河县| 通渭县| 独山县| 禹城市|