2011-09-22 192 views
1

如何使用Python tkinter生成正常的选择列表(例如邮政地址的任何HTML表单中的“状态”字段)?如下所示,Listbox小部件始终在大框中显示所有选择内容,如果将高度降低为1,则在选中时不会展开列表。 OptionMenu小部件在选中时会正确弹出列表,但在关闭时不会在类似于条目的框中显示当前值。 Entry小部件具有所需的外观,但没有关联的值列表。 。使用tkinter的条目选择列表

请不要告诉我的Tkinter不能做一个基本形式的选择:-(

from tkinter import * 

class App: 
    def __init__(self, master): 

     frame = Frame(master) 
     frame.pack() 

     items = ["Apple", "Banana", "Cherry"] 
     self.list = Listbox(frame, width=8, height=1) 
     for item in items: 
      self.list.insert(END, item) 
     self.list.pack(side=LEFT) 

     fruit = StringVar() 
     fruit.set(items[1]) 
     self.menu = OptionMenu(frame, fruit, *items) 
     self.menu.pack(side=LEFT) 

     self.entry = Entry(frame, width=8) 
     self.entry.insert(0, items[2]) 
     self.entry.pack(side=LEFT) 

root = Tk() 
app = App(root) 
root.mainloop() 

回答

1

你所要求的是所谓的组合框,如果你使用的是旧版本的Python(< 2.7)您可以使用tix.ComboBox。对于python 2.7及更高版本,您可以使用ttk.combobox(链接指向最新的python 3.x文档,但它与Python 2.7中的相同)。

+0

非常感谢 - 这正是我使用旧文档所获得的结果(http://effbot.org/tkinterbook/)。 Combobox就在Python库参考,版本2.7.2,2011年9月8日的第962页。 – Dave