59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
|
|
||
|
import wx
|
||
|
|
||
|
|
||
|
class TestNotebook(wx.Notebook):
|
||
|
def __init__(self, parent, ID=-1):
|
||
|
wx.Notebook.__init__(self, parent, ID)
|
||
|
|
||
|
# page 1
|
||
|
# just a panel with a small fixed size
|
||
|
p = wx.Panel(self, size=(50,50))
|
||
|
self.AddPage(p, "page 1")
|
||
|
|
||
|
# page 2
|
||
|
# a medium sized panel with manually layed out controls
|
||
|
p = wx.Panel(self)
|
||
|
b = wx.Button(p, -1, "a button", (20,20))
|
||
|
b = wx.Button(p, -1, "another button", (80,80))
|
||
|
b = wx.Button(p, -1, "and yet another button", (140,140))
|
||
|
b.Bind(wx.EVT_BUTTON, self.ShowBestSizes)
|
||
|
self.AddPage(p, "page 2")
|
||
|
|
||
|
# page 3
|
||
|
# a larger panel with lots of controls in a sizer.
|
||
|
text = "one two buckle my shoe three four shut the door "\
|
||
|
"five six pick up sticks seven eight lay them straight "\
|
||
|
"nine ten big fat hen"
|
||
|
p = wx.Panel(self)
|
||
|
fgs = wx.FlexGridSizer(cols=4, vgap=5, hgap=5)
|
||
|
for word in text.split():
|
||
|
label = wx.StaticText(p, -1, word+":")
|
||
|
tc = wx.TextCtrl(p, -1, "", size=(120,-1))
|
||
|
fgs.Add(label, flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=10)
|
||
|
fgs.Add(tc, flag=wx.RIGHT, border=10)
|
||
|
box = wx.BoxSizer()
|
||
|
box.Add(fgs, 1, wx.EXPAND|wx.ALL, 10)
|
||
|
p.SetSizer(box)
|
||
|
self.AddPage(p, "page 3")
|
||
|
|
||
|
|
||
|
# show the best size of each page
|
||
|
def ShowBestSizes(self, evt):
|
||
|
for num in range(self.GetPageCount()):
|
||
|
page = self.GetPage(num)
|
||
|
print page.GetBestSize()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
app = wx.PySimpleApp()
|
||
|
f = wx.Frame(None, -1, "Notebook Test")
|
||
|
nb = TestNotebook(f)
|
||
|
s = wx.BoxSizer()
|
||
|
s.Add(nb) # notebook is added directly to the sizer
|
||
|
f.SetSizer(s)
|
||
|
s.Fit(f) # sizer calculates layout to set frame size
|
||
|
f.Show()
|
||
|
app.MainLoop()
|
||
|
|