wxpython布局管理部件wx.gridbagsizer用法示例


text = ("This is text box")
        panel = wx.Panel(self, -1)
        chkAll1 = wx.CheckBox(panel, ID_CHKBOX_CAN_SEL_ALL, u'全選')       
        chkKnown = wx.CheckBox(panel, ID_CHKBOX_CAN_UNKNOWN, u'不會')
        chkUnknow = wx.CheckBox(panel, ID_CHKBOX_CAN_KNOWN, u'會')

        chkAll2 = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_ALL, u'全選')
        chkChuzhong = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_CHUZHONG, u'初中')
        chkCollegue = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_DAXUE, u'大學')
        chkCollegueCet6 = wx.CheckBox(panel, ID_CHKBOX_SEGMENT_SEL_DAXUE_CET6, u'大學六級')

        #lst = wx.ListCtrl(panel, ID_LIST_RECITE, style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES)
        self.lst = ReciteListCtrl(panel, ID_LIST_RECITE)

        sz1 = wx.GridSizer(rows=2, cols=4, vgap=5, hgap=20)
        sz1.Add(chkAll1)
        sz1.Add(chkKnown)
        sz1.Add(chkUnknow)
        sz1.Add(wx.TextCtrl(panel))

        sz1.Add(chkAll2)
        sz1.Add(chkChuzhong)
        sz1.Add(chkCollegue)
        sz1.Add(chkCollegueCet6)

        sz0 = wx.BoxSizer(wx.VERTICAL)
        sz0.Add(sz1)
        sz0.Add(self.lst, 1, wx.EXPAND)
        panel.SetSizer(sz0)

 

 

 

wxpython布局管理部件wx.gridbagsizer用法示例

轉自:http://www.jbxue.com/python/29629.htm

 

wxpython中布局管理wx.gridbagsizer部件的用法,wx.gridbagsizer實現對部件的顯式定位,部件項目還可以跨越行或列,一起學習下。

 

wxPython 中最復雜的 sizer.
它帶來了對部件的顯式定位. 部件項目還可以跨越行或列.  專題教程:wxpython中文教程

wx.GridBagSizer 的構造器是十分簡單的。
wx.GridBagSizer (integer vgap, integer hgap)
垂直和水平空白 (gap) 定義了子部件之間的空白距離. 通過 Add() 方法向網格里添加部件項目.
Add(self, item, tuple pos, tuple span=wx.DefaultSpan, integer flag=0,
    integer border=0, userData=None)
“item” 指你要插入到網格中的部件. “pos” 指定虛擬網格的位置. 左上單元格的 “pos” 值為(0, 0).“span” 是一個對應部件的跨度值. 比如(3, 2)指一個部件要跨越 3 行 2 列. “flag” 和 “border” 兩個參數在早前的 wx.BoxSizer 中已經討論了.
網格中的這些部件項目可以隨窗口縮放而改變其大小,也可以保持不變.

如果需要部件變大或縮小,可以使用這兩個方法.
AddGrowableRow(integer row)
AddGrowableCol(integer col)

例子:

復制代碼代碼示例:

#!/usr/bin/python
#coding=utf-8

#wxgridbagsizer.py

import wx

class MyFrame(wx.Frame):
    def __init__(self,parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition)
        sizer = wx.GridBagSizer(9, 9)
        sizer.Add(wx.Button(self, -1, "按鈕1"), (0, 0), wx.DefaultSpan,
                  wx.ALL, 5)
        sizer.Add(wx.Button(self, -1, "按鈕2"), (1, 1), (1, 7), wx.EXPAND)
        sizer.Add(wx.Button(self, -1, "按鈕3"), (6, 6), (3, 3), wx.EXPAND)
        sizer.Add(wx.Button(self, -1, "按鈕4"), (3, 0), (1, 1),
                  wx.ALIGN_CENTER)
        sizer.Add(wx.Button(self, -1, "按鈕5"), (4, 0), (1, 1),
                  wx.ALIGN_LEFT)
        sizer.Add(wx.Button(self, -1, "按鈕6"), (5, 0), (1, 1),
                  wx.ALIGN_RIGHT)
        sizer.AddGrowableRow(6)
        sizer.AddGrowableCol(6)
        self.SetSizerAndFit(sizer)
        self.Centre()
class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, 'wxgridbagsizer.py')
        frame.Show(True)
        return True
app = MyApp(0)
app.MainLoop()

要實現部件跨越多於一個的單元格,必須要提供 wx.EXPAND 標志。
self.SetSizerAndFit(sizer)
這方法跟 SetSizer() 差不多,此外它將把大小通告給窗口,以確保所有按鈕都將顯示在窗口上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM