【发布时间】:2013-10-11 18:43:27
【问题描述】:
使用 wxPython 为 OSX 和 Linux/X 编写 GUI,我遇到了一个问题,如果我有大量笔记本选项卡,我无法获得 wx.Dialog 或 wx。包含 wx.Notebook 的框架或 wx.Panel 展开以显示它们(wx.EXPAND 似乎没有做任何事情)
在 Linux/X 下,这不是问题,因为它会产生小箭头,让您从一个选项卡转到另一个选项卡 (see illustration here)。但在 OSX 下,我的用户被搞砸了,因为选项卡从面板边缘拉出并且完全无法访问 (illustration)。
用于创建上述示例的示例代码:
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 为所有笔记本标签腾出足够的空间? 谢谢!
【问题讨论】:
-
您是否尝试过在将面板添加到 sizer 时手动设置比例标志?
-
@MatteoD 这样做了,但没有任何效果。
-
wxPython 演示在调整大小时的行为方式是否相同?在 Windows 上,当我将其调整为太小时,箭头只会出现,我可以通过这种方式找到它们。还有你使用的是哪个 wxPython 版本?
-
@MikeDriscoll 它在调整大小时的行为确实是一样的,唉。我在 wxPython 2.8.12.1;没有机会尝试更高版本。 (另外,抱歉耽搁了;周末不在我的 OSX 电脑上:D)
-
我会询问 wxPython 用户组或 wxPython-mac 用户组或两者。