Как создать поле со списком, которое включает флажок для каждого элемента?

Я совершенно не знаком с tkinter и python. Мне было интересно, как создать кнопку, которая будет действовать следующим образом:

  • Нажмите на кнопку, опустив список (так что это combobox)
  • Каждая строка списка имеет флажок.
  • Наконец, если щелкнуть флажок, запустите функцию или (даже лучше), когда combobox больше не будет удаляться, запустите функцию с элементами, проверенными как args.

ОБНОВИТЬ

Кнопка / menuButton должна действовать как фильтр. Когда меню опущено, пользователь может отключить несколько опций (без того, чтобы меню исчезать при каждом щелчке элемента), он не хочет. Поэтому очень важно иметь возможность видеть флажки, чтобы пользователь знал, какие параметры в настоящее время активны.

Наконец, я использовал идею Брайана, создав кадр верхнего уровня. Вот что я имею:

2 Solutions collect form web for “Как создать поле со списком, которое включает флажок для каждого элемента?”

Нет виджета, чтобы делать то, что вы хотите. Вам нужно будет создать окно верхнего уровня с кучей контрольных кнопок. Затем вы можете запустить внешний вид с помощью обычной кнопки.

Я не думаю, что OptionMenu предназначен для хранения всего, кроме строк. Похоже, вы хотите функциональность Listbox , у которой есть опции, позволяющие выбирать несколько вариантов, получать все выбранные элементы и т. Д.

Это дает вам OptionMenu с OptionMenu в содержащемся меню. Проверьте, какие предметы вам нравятся, затем щелкните правой кнопкой мыши в окне tkinter, чтобы напечатать значения флажков на консоли.

 from tkinter import * master = Tk() var = StringVar(master) var.set("Check") w = OptionMenu(master, variable = var, value="options:") w.pack() first = BooleanVar() second = BooleanVar() third = BooleanVar() w['menu'].add_checkbutton(label="First", onvalue=True, offvalue=False, variable=first) w['menu'].add_checkbutton(label="Second", onvalue=True, offvalue=False, variable=second) w['menu'].add_checkbutton(label="Third", onvalue=1, offvalue=False, variable=third) master.bind('<Button-3>', lambda x: print("First:", first.get(), " Second:", second.get(), " - Third:", third.get())) mainloop() 

См. Также это .

  • Python Tkinter Canvas не может связывать клавиатуру
  • Кнопка Python / Tkinter и запись в том же окне
  • TkInter keypress, keyrelease events
  • Цвет фона для Tk в Python
  • lambda in for loop принимает последнее значение
  • Код ввода клавиши со стрелкой не работает в tkinter
  • idle-python3.2 не запускается: жалобы на NameError: имя «Tk» не определено
  • Окно Tkinter автоматически закрывается после запуска программы Python в PyCharm
  • Python - лучший язык программирования в мире.