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

Я совершенно не знаком с 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?
  • Что может привести к тому, что диалоговое окно открытого файла в Tkinter / Python будет очень медленно закрываться после того, как пользователь выберет файл?
  • Включить данные изображения в Python, возможно?
  • Python / Tkinter: безопасен ли поток Tkinter StringVar (IntVar и т. Д.)?
  • Системный лоток Ubuntu в Python
  • Использование Lambda и кортежей для отправки нескольким функциям: Python, Tkinter
  • Определите, какая кнопка была нажата в Tkinter?
  • мой tkinter gui невидим по неизвестным причинам
  • Динамически менять цвет фона виджета в Tkinter
  • Tkinter: «Python не может быть настроен для Tk»
  • Виджет кнопки не уничтожается при попытке удалить из сетки
  • Python - лучший язык программирования в мире.