【问题标题】:WxPython, Collapsible Pane containing Scrolled WindowWxPython,包含滚动窗口的可折叠窗格
【发布时间】:2021-11-17 22:06:39
【问题描述】:

我正在尝试创建一个可滚动的可折叠窗格,当包含的按钮列表大于屏幕时。所以我在窗格内放了一个 ScrolledWindow - 并得到了这个错误:

Gtk-警告:试图将 GtkScrolledWindow 类型的小部件添加到 GtkExpander,但作为 GtkBin 子类,GtkExpander 一次只能包含一个小部件;它已经包含一个 wxPizza 类型的小部件

什么,他们不喜欢披萨? :) 我的第一次阅读让我认为它们是不兼容的小部件,因为它们都可能属于 GtkExpander 类型。但是这个问题 - Scrollbars not showing - 似乎同时使用了这两种小部件类型。有一些区别 - 首先,他们将 CollapsiblePane 放入 ScrolledWindow,其次,它实际上是一个 PyCollapsiblePane,来自 WxPython 的 AGW 库。

那么,通过一些小部件的组合,是否有可能拥有一个可折叠的对象,当它展开时,包含一个滚动的对象列表?如果是这样,怎么办?还是这两个小部件不兼容(按此顺序)?

【问题讨论】:

  • 也许你可以添加一个最小的、可行的例子来给我们一些可以使用的东西。
  • @RolfofSaxony,好吧,为了胜利而躲避... :) 我终于开始尝试提取/压缩代码示例 - 它奏效了。 (主要是 - 很奇怪,但它设法在折叠面板内有一个滚动面板)。对于解决方案,事实证明 CollapsiblePanes 有一个 inner_pane,您应该向其中添加子小部件。呜呜呜。
  • 这些事情通常是这样的。一旦您坐下来整理示例,解决方案就会抬起头来,通常会导致“我为什么没看到!”片刻。既然您已经完成了努力,为什么不发布您的问题的自我答案。问候。
  • @RolfofSaxony,是的。我在删除问题上的比例约为 50/50,而不是回答它,但你打破了平局。 :)

标签: python wxpython


【解决方案1】:

发现问题。原来 Collapsible-Pane 有一个用于儿童的内面板。

class BadCollapsingPanel(wx.CollapsiblePane):
def __init__(self, parent):
    super().__init__(parent, wx.ID_ANY, style=wx.SUNKEN_BORDER)
    self.parent = parent
    self.inner_pane = self.GetPane()
    self.inner_pane.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)

    # self.very_bad_panel = ScrollingPanel(self)  # Breaks
    self.very_bad_panel = ScrollingPanel(self.inner_pane)  # Works

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2018-12-17
    • 2017-12-14
    相关资源
    最近更新 更多