我試圖通過單擊按鈕在wxpanel中創建一個新框架。通過事件創建一個wxpython滾動窗口(框架)
下面是我的代碼。 它不起作用。 滾動條不顯示。
任何人都可以幫助我嗎?謝謝!
(更新:一個按鈕,在新窗口中添加)
import wx
class ftest(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
"test Panel", size=(800, 500), pos=(0,0))
self.MainPanel = wx.Panel(self, wx.ID_ANY)
self.btn1 = wx.Button(self.MainPanel, pos=(50,100), label="New Frame")
self.btn1.Bind(wx.EVT_BUTTON, self.newFrame)
def newFrame(self, event):
self.new_window = wx.Frame(self, title='frame2', size=(500, 500), pos=(800,0))
self.new_window.Show()
self.scroll = wx.ScrolledWindow(self.new_window, -1)
self.scroll.SetScrollbars(1, 1, 1600, 1400)
self.btn2 = wx.Button(self.new_window, pos=(50,100), label="button2")
if __name__ == "__main__":
app = wx.App(False)
frame = ftest()
frame.Show()
app.MainLoop()
,
(更新2) 基於Joran比斯利的代碼,
此代碼創建滾動條,但按鈕2未顯示。 和滾動時文本小部件無法正常工作。
import wx
class ftest(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
"test Panel", size=(800, 500), pos=(0,0))
self.MainPanel = wx.Panel(self, wx.ID_ANY)
self.btn1 = wx.Button(self.MainPanel, pos=(50,100), label="New Frame")
self.btn1.Bind(wx.EVT_BUTTON, self.newFrame)
def newFrame(self, event):
self.new_window = wx.Frame(self, title='frame2', pos=(800,0))
self.scroll = wx.ScrolledWindow(self.new_window, -1,size=(500,500))
self.scroll.SetScrollbars(1, 1, 1600, 1400)
self.new_window.Layout()
self.new_window.Fit()
self.new_window.Show()
self.btn2 = wx.Button(self.new_window, pos=(50,100), label="button2")
wx.StaticText(self.new_window, -1, 'test text', pos=(50, 200))
if __name__ == "__main__":
app = wx.App(False)
frame = ftest()
frame.Show()
app.MainLoop()
,
(更新3) 我發現我錯了。這些小部件應該位於滾動對象上,而不是框架對象上。 Layout()和Fit()不是必需的。 所以正確的代碼是
import wx
class ftest(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
"test Panel", size=(800, 500), pos=(0,0))
self.MainPanel = wx.Panel(self, wx.ID_ANY)
self.btn1 = wx.Button(self.MainPanel, pos=(50,100), label="New Frame")
self.btn1.Bind(wx.EVT_BUTTON, self.newFrame)
def newFrame(self, event):
self.new_window = wx.Frame(self, title='frame2', pos=(800,0),size=(500,500))
self.scroll = wx.ScrolledWindow(self.new_window, -1)
self.scroll.SetScrollbars(1, 1, 1600, 1400)
#self.new_window.Layout()
#self.new_window.Fit()
self.new_window.Show()
self.btn2 = wx.Button(self.scroll, pos=(50,100), label="button2")
wx.StaticText(self.scroll, -1, 'test text', pos=(50, 200))
if __name__ == "__main__":
app = wx.App(False)
frame = ftest()
frame.Show()
app.MainLoop()
你能解釋「不起作用「? – rapvelopment
您的代碼對我來說工作正常,這意味着它會彈出一個標記爲「測試面板」的窗口,並在其上標記爲「新建」的按鈕。點擊該按鈕後,將出現一個標有「frame2」的新窗口 – stochastic
它打開一個新框架,但沒有滾動條。我無法在此上傳圖片。所以我把我的圖片放在我的谷歌驅動器中。請點擊此,https://drive.google.com/file/d/0B5FAgE3R3ldRck4xM2UtY3htZ28/view?usp=sharing – vandy