[英]wxPython scrolledwindow in a notebook does not scroll
我想在筆記本的標簽上滾動 windows。 如果 window 太小,內容應該是可滾動的。 如果 window 足夠大,則一切都已正確布局。 當 window 太小無法容納所有內容時,它看起來也正確,但滾動條從未出現,我也無法使用鼠標滾輪滾動。 這是我最小的失敗案例:
#!/usr/bin/env python3
import wx
class MainWindow(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__ (self, parent, id = wx.ID_ANY, title = u"Title", pos = wx.DefaultPosition, size = wx.Size(800,480), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL)
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
notebook = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0)
for tab in range(0,3):
scrolled_window = wx.ScrolledWindow(notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.HSCROLL|wx.VSCROLL)
sizer = wx.GridSizer(0, 5, 0, 0)
scrolled_window.SetScrollRate(5, 5)
scrolled_window.SetSizer(sizer)
notebook.AddPage(scrolled_window, "Tab %d" % tab, False)
scrolled_window.SetScrollbars(1, 1, 1, 1)
for btn in range(0,50):
button = wx.Button(scrolled_window, wx.ID_ANY, str(btn), wx.DefaultPosition, wx.DefaultSize, 0)
button.SetMinSize((-1, 90))
sizer.Add(button, 0, wx.ALL|wx.EXPAND, 5)
sizer.Fit(scrolled_window)
self.Layout()
app = wx.App(False)
main_window = MainWindow(parent=None)
main_window.Show(True)
app.MainLoop()
此外,我看到此斷言失敗(每個選項卡一次或每當我更改選項卡時):
(scroll_bug.py:8990): Gtk-CRITICAL **: 09:02:58.514: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkNotebook
感謝幫助
我不確定,但問題可能在於嘗試在筆記本中使用ScrolledWindow
作為從屬子項 window。
面板更合適。
嘗試使用ScrolledPanel
代替,例如
#!/usr/bin/env python3
import wx
import wx.lib.scrolledpanel as scrolled
class MainWindow(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__ (self, parent, id = wx.ID_ANY, title = u"Title", pos = wx.DefaultPosition, size = wx.Size(800,480), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL)
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
self.panel = wx.Panel(self)
notebook = wx.Notebook(self.panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0)
for tab in range(0,3):
scrolled_window = scrolled.ScrolledPanel(notebook, wx.ID_ANY)
scrolled_window.SetupScrolling()
notebook.AddPage(scrolled_window, "Tab %d" % tab, False)
bsizer = wx.GridSizer(0, 5, 0, 0)
for btn in range(0,50):
button = wx.Button(scrolled_window, wx.ID_ANY, str(btn), wx.DefaultPosition, wx.DefaultSize, 0)
button.SetMinSize((-1, 90))
bsizer.Add(button, 0, wx.ALL|wx.EXPAND, 5)
scrolled_window.SetSizer(bsizer)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(notebook, 1, wx.ALL| wx.EXPAND, 5)
self.panel.SetSizer(sizer)
self.Layout()
self.Refresh()
app = wx.App(False)
main_window = MainWindow(parent=None)
main_window.Show(True)
app.MainLoop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.