gpt4 book ai didi

python - 在 wxPython 中刷新面板内容

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:22 24 4
gpt4 key购买 nike

根据来自同一面板上其他控件的事件更新 wxPanel 中的小部件的方法是什么?

场景 1 是根据从另一个 comboBox 中选择的内容更新 comboBox 的列表,两者都在同一个面板中。

场景 2 基于事件在面板中显示新控件/小部件。

基本上创建新控件很容易,但我不知道如何刷新/更新我的面板,所以立即显示它们。

最佳答案

场景一

要更改组合框 self.cbx 的选择,您可以使用以下任何方法:

self.cbx.SetItems(choices) 其中 choices 是完整的选项列表。
self.cbx.SetString(n, string) 将字符串设置在位置 n。
InsertItems(items, pos) 将 items 参数中的字符串列表插入列表框中 pos 参数中的位置之前。

请注意,组合框中的列表不存在列表框的Set(choices) 方法。您必须使用 SetItems(choices) 来代替(这在一些教科书中没有明确说明)。

如果您希望这些更改因另一个组合框 self.cbx_1 中的选择而发生,只需获取事件 (self.Bind(wx.EVT_COMBOBOX, on_combo_1, self. cbx_1)),在相应的self.on_combo方法中随意处理您的数据,并使用上述方法之一修改第二个组合框。

例如:

def on_combo_1(self, evt):
"append cbx_1 selection to cbx if not already in cbx"
selection = self.cbx_1.GetStringSelection()
cbx_choices = self.cbx.GetItems()
if selection not in cbx_choices:
cbx_choices.append(selection)
self.cbx.SetItems(cbx_choices)

组合框位于相同或不同面板中的事实与此无关。

场景2

通常您将小部件放在 sizer 中。要在 sizer 上隐藏或显示元素,您可以调用方法 ShowHideLayout:

Show(self, item, show=True, recursive=false)

显示或隐藏由 sizer 管理的项目。要使 sizer 项目消失或重新出现,请使用 Show,然后使用 Layout。 item 参数可以是窗口、sizer 或项目的从零开始的索引。使用递归参数显示或隐藏 subsizer 中的项目。如果找到该项目,则返回 True。

Hide(self, item, recursive) 

Show (item, False, recursive) 的便捷方法。

Layout(self)

此方法将使用分配给 sizer 的当前空间强制重新计算和布局由 sizer 控制的项目。通常这是从所属窗口的 EVT_SIZE 处理程序自动调用的,但是当 sizer 中的某个项目改变大小,或者添加或删除项目时,从用户代码调用它也很有用。

引用资料:wxPython 实战、Noel Rappin 和 Robin Dunn

关于python - 在 wxPython 中刷新面板内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com