带有tkinter的条目选择列表

时间:2011-09-22 12:21:09

标签: python forms tkinter tkinter-entry

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

请不要告诉我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()

2 个答案:

答案 0 :(得分:2)

您正在寻找一个组合框小部件,TTK提供了这个小部件:

http://docs.python.org/dev/library/tkinter.ttk.html

http://www.tkdocs.com/widgets/combobox.html

答案 1 :(得分:1)

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