2011-09-22 194 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