python Tix - 如何清除组合框

时间:2014-12-05 23:18:04

标签: python python-2.7 tkinter tk tix

如何清除Tix.ComboBox对象中的所有项?我试过像

这样的东西
cb.entry.delete (0, Tix.END)

以及此功能的其他验证 但它似乎没有做任何事情。从API不清楚我应该使用哪种功能,而我所阅读的文档对此一无所知。它甚至可能??

谢谢!

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

1 个答案:

答案 0 :(得分:2)

正如the docs所说,ComboBox有一个入口子窗口小部件和一个列表框子窗口小部件。一般情况下,请参阅组合框上的the Wikipedia pageSomething 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,它会告诉您ListboxScrolledListBox。幸运的是,真的 listbox(好吧,Listbox,但这只是一个知道如何成为{_dummyListbox的{​​{1}}子类1}}子小部件)。

所以,真正想要的是Listbox

(我相信Tcl / Tk沿着属性引用转发,而Python / Tkinter没有,这就是为什么Tix和其他花哨的Tk包装器和扩展并不像Python那样好用。 docs让它们出现。)


请注意,正如Tix的文档所说,cb.slistbox.listbox引用第一个条目,ListBox引用最后一个条目,因此您的调用中的参数是正确的。

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

0

你应该知道将来如何找到类似的案例。 (假设你没有受到Tix的伤害,你可以完全避免它。)


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

END