Список выбора записей с помощью tkinter - PullRequest
1 голос
/ 22 сентября 2011

Как я могу сгенерировать обычный список выбора (например, поле «Состояние» в любой HTML-форме для почтовых адресов), используя Python tkinter?Как показано ниже, виджет «Список» все время отображает все выделения в большом поле, и если вы уменьшите высоту до 1, он не будет расширять список при выборе.При выборе виджет OptionMenu правильно отображает список, но при закрытии не отображает текущее значение в поле, похожем на Entry.И виджет 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 ]

2 голосов
/ 22 сентября 2011

Вы ищете виджет со списком, TTK предоставляет этот виджет:

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

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

1 голос
/ 22 сентября 2011

То, что вы просите, называется комбо-боксом. Если вы используете старую версию python (<2.7), вы можете использовать <a href="http://epydoc.sourceforge.net/stdlib/Tix.ComboBox-class.html" rel="nofollow noreferrer"> tix.ComboBox . Для python 2.7 и выше вы можете использовать ttk.combobox (ссылка указывает на последнюю документацию по python 3.x, но это тот же виджет, что и в python 2.7).

...