gpt4 book ai didi

python Tix - 如何清除组合框

转载 作者:行者123 更新时间:2023-12-01 04:56:12 25 4
gpt4 key购买 nike

如何清除 Tix.ComboBox 对象中的所有项目?我尝试过类似的事情

cb.entry.delete (0, Tix.END)

以及该函数的其他版本但它似乎没有做任何事情。从 API 中也不清楚我应该使用哪个函数,而且我读过的文档对此只字未提。有可能吗?

谢谢!

编辑:PS 按名称删除项目也很棒。也找不到如何做到这一点。

最佳答案

the docs比如说,组合框有一个条目子小部件和一个列表框子小部件。请参阅the Wikipedia page一般来说,组合框上:Something else 部分是条目,List item 1 等部分是列表框。

因此,cb.entry.delete 完全有效,但它正在删除 entry 子小部件的内容。这不会影响列表框中的任何项目。

<小时/>

那么,如何获取列表框?嗯,在 Tcl/Tk ,您只需访问cb.listbox即可。但这在 Python/Tkinter 中不起作用。

如果你看the source ,您可以看到 ComboBox 没有两个子小部件,而是 五个,其中没有一个是 Listbox 或名为 列表框:

entry       Entry
arrow Button
slistbox ScrolledListBox
tick Button
cross Button : present if created with the fancy option

(您应该能够在交互式解释器中使用 help(Tix.ComboBox) 轻松看到这一点。)

但是 ScrolledListBox 本身是另一个 Tix 复合小部件,本身没有任何有用的东西,因此您仍然需要找到 Listbox 子子小部件。查看帮助或source它会显示 ScrolledListBox 有一个 listbox。幸运的是,这确实是一个 Listbox(嗯,一个 _dummyListbox,但这只是一个 Listbox 子类,它知道如何成为 Tix 子小部件)。

所以,您真正想要的是cb.slistbox.listbox

(我相信 Tcl/Tk 沿着属性引用转发,而 Python/Tkinter 则不然,这就是为什么 Tix 和其他花哨的 Tk 包装器和扩展在 Python 中使用起来并不像 Tk 文档让它们出现那样好.)

<小时/>

请注意,正如 ListBox 的文档所述,0 指的是第一个条目,END 指的是最后一个条目,因此您的调用中的参数是正确的。

所以,长话短说,这应该可以做到:

cb.slistbox.listbox.delete(0, Tix.END)

而且你应该知道以后如何找到类似的案例。 (假设您没有因为 Tix 受到严重伤害而完全避免使用它。)

<小时/>

同时,据我所知,没有办法按名称删除,但自己做并不难。只需迭代条目并检查它们即可:

for i in range(cb.slistbox.listbox.size()):
if cb.slistbox.listbox.get(i) == name:
cb.slistbox.listbox.delete(i)
break

关于python Tix - 如何清除组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27326246/

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