python - WxPython,包含滚动窗口的可折叠窗格
问题描述
我正在尝试创建一个可滚动的可折叠窗格,当包含的按钮列表大于屏幕时。所以我在窗格内放了一个 ScrolledWindow - 并得到了这个错误:
Gtk-警告:试图将 GtkScrolledWindow 类型的小部件添加到 GtkExpander,但作为 GtkBin 子类,GtkExpander 一次只能包含一个小部件;它已经包含一个 wxPizza 类型的小部件
什么,他们不喜欢披萨?:) 我的第一次阅读让我认为它们是不兼容的小部件,因为它们都可能是 GtkExpander 类型。但是这个问题 -没有显示滚动条- 似乎同时使用了这两种小部件类型。有一些区别 - 首先,他们将 CollapsiblePane放在ScrolledWindow 中,其次,它实际上是来自 WxPython 的 AGW 库的 PyCollapsiblePane。
那么,通过一些小部件的组合,是否有可能拥有一个可折叠的对象,该对象在展开时包含一个滚动的对象列表?如果是这样,怎么办?还是这两个小部件不兼容(按此顺序)?
解决方案
发现了问题。原来 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
推荐阅读
- ckeditor - TYPO3 9/10 的 ckeditor 中的 span、strong、em
- java - 使用 poi-scratchpad MAPIMessage 从 MSG 文件中获取电子邮件地址
- javascript - 将 this.props 的值推送到子组件的状态
- python - ipyvuetify 中的按钮与复选框的行为不同。为什么?
- c++ - 为什么在访问范围之外的 std::vector 中的元素时没有出现范围错误?
- c# - Azure Cosmos DB MongoDB API 4.0 事务异常处理
- python - 有没有办法找到一两行数据的列之间的关系/相关性?
- c# - C#、Entity Framework Core 和 PostgreSql:插入单行需要 20 多秒
- c++ - 在一个函数中运行不同长度的数组
- python - 在 pyomo 中使用 mle 进行参数估计