【问题标题】:WxPython BoxSizer inside ListbookListbook 中的 WxPython BoxSizer
【发布时间】:2018-10-01 19:21:44
【问题描述】:

我正在尝试使用 wx.Listbook 来实现具有多个页面的设置窗口。我把 Listbook 做得很好,但是当我开始向页面添加项目时,我遇到了问题。这些项目彼此重叠显示,因此无法看到我要显示的所有内容。

    self.global_settings_frame = wx.Frame(parent=self, title="Global Settings", name="Global Settings")
    self.global_settings_listbook = wx.Listbook(parent=self.global_settings_frame, style=wx.LB_LEFT)
    self.global_settings_file_window = wx.Panel(parent=self.global_settings_listbook)
    self.global_settings_file_box = wx.BoxSizer(orient=wx.VERTICAL)
    self.show_full_pathname_checkbox = wx.CheckBox(self.global_settings_file_window, label="Show full pathname")
    self.global_settings_file_box.Add(self.show_full_pathname_checkbox, proportion=1)
    self.global_default_extension = wx.TextCtrl(self.global_settings_file_window)
    self.global_settings_file_box.Add(self.global_default_extension, proportion=1)

    self.global_settings_token_window = wx.Panel(parent=self.global_settings_listbook)

    self.global_settings_listbook.InsertPage(0, self.global_settings_file_window, "Files")
    self.global_settings_listbook.InsertPage(1, self.global_settings_token_window, "Token Defnition")
    self.global_settings_frame.Show()

当我注释掉第二个元素时,未注释的部分可以正常工作:

    self.global_settings_frame = wx.Frame(parent=self, title="Global Settings", name="Global Settings")
    self.global_settings_listbook = wx.Listbook(parent=self.global_settings_frame, style=wx.LB_LEFT)
    self.global_settings_file_window = wx.Panel(parent=self.global_settings_listbook)
    self.global_settings_file_box = wx.BoxSizer(orient=wx.VERTICAL)
    self.show_full_pathname_checkbox = wx.CheckBox(self.global_settings_file_window, label="Show full pathname")
    self.global_settings_file_box.Add(self.show_full_pathname_checkbox, proportion=1)
    self.global_default_extension = wx.TextCtrl(self.global_settings_file_window)
    self.global_settings_file_box.Add(self.global_default_extension, proportion=1)

    self.global_settings_token_window = wx.Panel(parent=self.global_settings_listbook)

    self.global_settings_listbook.InsertPage(0, self.global_settings_file_window, "Files")
    self.global_settings_listbook.InsertPage(1, self.global_settings_token_window, "Token Defnition")
    self.global_settings_frame.Show()

但我认为 BoxSizer 无法正常工作,因为当我注释掉上一行(将 CheckBox 添加到 BoxSizer 的那一行)时,显示是相同的。

我尝试为每个元素使用单独的面板,然后将这些面板放入 BoxSizer,但这也不起作用(如果需要,我可以向您展示它的外观)。所以看起来我没有正确使用 BoxSizer,但我不明白在这种情况下我应该如何使用它。我想要的是一个 ListBook 的页面,其中包含一个 CheckBox 和一个 TextCtrl (用于单行文本输入)。你能帮忙吗?

【问题讨论】:

    标签: python layout wxpython wxwidgets boxsizer


    【解决方案1】:

    正如我所见,您永远不会为您的页面分配任何大小。

    你应该这样做:

    ......
    self.global_settings_file_box.Add(self.global_default_extension, proportion=1)
    
    self.global_settings_file_window.SetSizer(self.global_settings_file_box)
    
    self.global_settings_token_window = wx.Panel(parent=self.global_settings_listbook)
    ......
    

    问候 Xav'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-31
      • 2013-07-28
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2021-06-14
      • 2019-10-17
      • 1970-01-01
      相关资源
      最近更新 更多