使用 wxPython 为 OSX 和 Linux/X 编写 GUI,我遇到了一个问题,如果我有大量的笔记本选项卡,我无法获得 wx.Dialog 或 wx.Frame 或 wx .Panel 包含 wx.Notebook 展开以显示它们(wx.EXPAND 似乎没有做任何事情)
在 Linux/X 下,这不是问题,因为它会产生小箭头,让您从一个选项卡转到另一个选项卡(参见此处的插图)。但在 OSX 下,我的用户被搞砸了,因为标签从面板边缘拉出并且完全无法访问(插图)。
用于创建上述示例的示例代码:
import wx
class TempFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Temp Frame")
self.notebook = wx.Notebook(self, id=wx.ID_ANY, style=wx.BK_DEFAULT)
for num in range(0, 11):
notepanel = TempPanel(self.notebook, num)
self.notebook.AddPage(notepanel, str(num))
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.notebook, 0, wx.ALL | wx.EXPAND, 5)
self.SetSizer(sizer)
self.Fit()
class TempPanel(wx.Panel):
def __init__(self, parent, num):
wx.Panel.__init__(self, parent, wx.ID_ANY)
self.title = wx.StaticText(self, wx.ID_ANY, str(num))
self.test_list = ["One", "One", "Two", "Three", "Five", "Eight"]
self.test_choice = wx.Choice(self, wx.ID_ANY, choices=self.test_list)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.title, 0, wx.ALL | wx.EXPAND, 5)
sizer.Add(self.test_choice, 0, wx.ALL | wx.EXPAND, 5)
self.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = TempFrame()
frame.Show(True)
app.MainLoop()
有没有办法告诉 wxPython 为所有笔记本标签腾出足够的空间?谢谢!