wxNotebook을 사용해 보려는 샘플 코드를 만들었지 만 새로 삽입 된 페이지는 완전히 비어 있습니다. 타이머 나 새 스레드를 사용하지 않고 MainLoop 앞에 페이지를 삽입하면 작동합니다. 어디서나 업데이트, 새로 고침 등의 작업이 필요하다고 생각되지만 작동하지 않습니다. 필자는 Windows 7과 Python 2.7을 사용합니다.새로운 wxNotebook-wxPython에서 페이지가 비어 있습니다.
import random
import wx
########################################################################
class TabPanel(wx.Panel):
#----------------------------------------------------------------------
def __init__(self, parent):
""""""
wx.Panel.__init__(self, parent=parent)
colors = ["red", "blue", "gray", "yellow", "green"]
self.SetBackgroundColour(random.choice(colors))
btn = wx.Button(self, label="Press Me")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(btn, 0, wx.ALL, 10)
self.SetSizer(sizer)
########################################################################
class DemoFrame(wx.Frame):
"""
Frame that holds all other widgets
"""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, wx.ID_ANY,
"self.notebook Tutorial",
size=(600,400)
)
panel = wx.Panel(self)
self.tabNum = 3
self.notebook = wx.Notebook(panel)
tabOne = TabPanel(self.notebook)
self.notebook.AddPage(tabOne, "Tab 1")
tabTwo = TabPanel(self.notebook)
self.notebook.AddPage(tabTwo, "Tab 2")
btn = wx.Button(panel, label="Add Page")
btn.Bind(wx.EVT_BUTTON, self.onButton)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.notebook, 1, wx.ALL|wx.EXPAND, 5)
sizer.Add(btn, 0, wx.ALL, 5)
panel.SetSizer(sizer)
self.Layout()
self.Show()
#----------------------------------------------------------------------
def onButton(self, event):
""""""
tab = TabPanel(self.notebook)
self.notebook.AddPage(tab, "Tab %s" % self.tabNum)
self.tabNum += 1
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
frame = DemoFrame()
app.MainLoop()
나는 그 페이지를 스레드로만 추가하고 싶습니다. 그 스레드 문제는 무엇입니까? –