Запуск функций из списка

#python #python-3.x #tkinter

#питон #python-3.x #tkinter

Вопрос:

попытка получить выбранные значения из списка кнопок проверки без необходимости создавать 10 или более кнопок проверки и var.

я получил это, чтобы проверить идею

 from tkinter import Tk, StringVar, Checkbutton, Button, BooleanVar  root = Tk() w, h = root.winfo_screenwidth(), root.winfo_screenheight() root.geometry("%dx%d 0 0" % (w, h))    def def1():  print("1")  def def2():  print("2")  def def3():  print("3")  def def4():  print("4")  def def5():  print("5")  def def6():  print("6")  def letssee():  print(addlist)    nomtestes = ["def1", "def2", "def3", "def4", "def5", "def6"]  clltes = 0 rwwtes = 0 addlist=[] username_cbs = dict() for name in nomtestes:  if clltes == 5:  rwwtes  = 1  clltes = 0  username_cbs[name] = Checkbutton(root, text=name, onvalue=True, offvalue=False)  username_cbs[name].var = BooleanVar()  username_cbs[name]['variable'] = username_cbs[name].var  username_cbs[name]['command'] = lambda w=username_cbs[name]: upon_select(w)  username_cbs[name].grid(row=rwwtes, column=clltes, pady=2)  clltes  = 1  Button(root, text="OK",command=letssee).grid(column=0, row=5, padx=1, pady=15)   def upon_select(widget):  if widget.var.get() == True:  addlist.append(widget['text'])  else:  addlist.remove(widget['text'])  root.mainloop()  

В этом примере я пытаюсь распечатать все кнопки, которые я выбрал, но для запуска функций, добавленных в список дополнений

Есть идеи, как это сделать?

Спасибо

Комментарии:

1. Можете ли вы свести вопрос к соответствующей части? Необходимо ли нам видеть ваш графический код и говорить о кнопках проверки или вопрос просто в том, как вызывать функции из списка?

2. мне просто нужно знать, как вызвать функцию в списке дополнений

Ответ №1:

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

 func_map = {"def1": def1, "def2": def2, "def3": def3, "def4": def4, "def5": def5, "def6": def6} nomtestes = ["def1", "def2", "def3", "def4", "def5", "def6"]  

 def letssee():  print(addlist)  for i in addlist:  func_map[i]()  

 Out:['def2', 'def1']  2  1  

Комментарии:

1. Мне нужно вызвать функцию в списке

2. ваш пример приводит меня к ошибке, что объект ‘str’ не может быть вызван

3. обновленный ответ.