如何清除Tix.ComboBox对象中的所有项?我试过像
这样的东西cb.entry.delete (0, Tix.END)
以及此功能的其他验证 但它似乎没有做任何事情。从API不清楚我应该使用哪种功能,而我所阅读的文档对此一无所知。它甚至可能??
谢谢!
编辑:PS按名称删除项目也很棒。无法找到如何做到这一点。
答案 0 :(得分:2)
正如the docs所说,ComboBox有一个入口子窗口小部件和一个列表框子窗口小部件。一般情况下,请参阅组合框上的the Wikipedia page:Something else
部分是条目,List item 1
等部分是列表框。
因此,cb.entry.delete
完全有效,但它正在删除条目子小部件的内容。这不会影响列表框中的任何项目。
那么,你如何获得listbox
?好吧,在Tcl/Tk中,您只需访问cb.listbox
即可。但这在Python / Tkinter中并不起作用。
如果您查看the source,可以看到ComboBox
没有两个子窗口小部件,但五个,其中没有一个是{{ 1}}或命名为Listbox
:
listbox
(您应该可以在交互式解释器中使用entry Entry
arrow Button
slistbox ScrolledListBox
tick Button
cross Button : present if created with the fancy option
轻松查看此内容。)
但是help(Tix.ComboBox)
本身就是另一个 ScrolledListBox
复合小部件,没有任何有用的东西,所以你仍然需要找到Tix
子子小部件。查看帮助或source,它会告诉您Listbox
有ScrolledListBox
。幸运的是,真的 是listbox
(好吧,Listbox
,但这只是一个知道如何成为{_dummyListbox
的{{1}}子类1}}子小部件)。
所以,真正想要的是Listbox
。
(我相信Tcl / Tk沿着属性引用转发,而Python / Tkinter没有,这就是为什么Tix和其他花哨的Tk包装器和扩展并不像Python那样好用。 docs让它们出现。)
请注意,正如Tix
的文档所说,cb.slistbox.listbox
引用第一个条目,ListBox
引用最后一个条目,因此您的调用中的参数是正确的。
所以,长话短说,这应该做到:
0
你应该知道将来如何找到类似的案例。 (假设你没有受到Tix的伤害,你可以完全避免它。)
与此同时,据我所知,没有办法按姓名删除,但自己并不难。只需迭代条目并检查它们:
END