[英]wxpython notebook - creating new pages
我是這里的新手,而且我是編碼的新手(自今年4月以來),請保持溫柔;-)
這是我的簡化代碼。 每次我通過單擊“ ClickMe”按鈕在筆記本中創建新頁面時。 我的問題是: 是否有不使用if / elif語句的選項? 將有10頁或更多頁面,因此希望避免每次都鍵入類似的代碼。 有什么方法可以使用動態創建變量(self.page ...)?
import wx
class PageOne(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
wx.StaticText(self, -1, pos = (10,10), label = "Test")
class PageTwo(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
wx.StaticText(self, -1, pos = (10,10), label = "Test 2")
self.text = wx.TextCtrl(self,-1, pos = (100,10))
def OnLoad(self, text):
self.text.AppendText(str(text))
class MainFrame(wx.Frame):
def __init__(self, parent, id, title, pos, size):
wx.Frame.__init__(self, parent, id, title, pos, size)
panel = wx.Panel(self)
self.nb = wx.Notebook(panel)
self.page1 = PageOne(self.nb)
self.nb.AddPage(self.page1, "PAGE 1")
self.button = wx.Button(self.page1, -1, pos = (100,10), label = "ClickMe")
self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
sizer = wx.BoxSizer()
sizer.Add(self.nb, 1, wx.EXPAND)
panel.SetSizer(sizer)
def OnClick(self, event):
page_number = self.nb.GetPageCount()
if page_number == 1:
self.page2 = PageTwo(self.nb)
self.nb.AddPage(self.page2, "PAGE 2")
self.page2.OnLoad("PAGE 2")
elif page_number == 2:
self.page3 = PageTwo(self.nb)
self.nb.AddPage(self.page3, "PAGE 3")
self.page3.OnLoad("PAGE 3")
elif page_number == 3:
self.page4 = PageTwo(self.nb)
self.nb.AddPage(self.page4, "PAGE 4")
self.page4.OnLoad("PAGE 4")
class App(wx.App):
def OnInit(self):
self.frame = MainFrame(None, -1, "Notebook", (250,50), (500,500))
self.frame.Show()
return True
app = App(False)
app.MainLoop()
我在這里找到了許多有用的信息,希望有人可以幫助我解決這個問題或以正確的方式告訴我(如果我犯了一些愚蠢的錯誤/假設)。
我會將所有頁面放在列表中,而不是將它們作為單獨的屬性。
def __init__(self, parent, id, title, pos, size):
#...
self.pages = [PageOne(self.nb)]
#...
def OnClick(self, event):
page = self.nb.GetPageCount() + 1
# Or: page = len(self.pages) + 1
self.pages.append(PageTwo(self.nb))
self.nb.AddPage(self.pages[page], "PAGE %d" % page)
self.pages[page].OnLoad("PAGE %d" % page)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.