Почему не обновляется меню Tkinter - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь изменить параметры меню tkinter при входе в функцию. Я могу убедиться, что функция введена, но по какой-то причине ее содержимое, похоже, не обновляет параметры меню tkinter. Вот фрагмент соответствующего кода:

def func(selection):
    global menuOptions;
    menuOptions = men[selection];
    root.update();

men = {
  "x1": ["a"],
  "x2": ["b", "c"],
  "x3": ["d", "e", "f"],
  "x4":["g", "h", "i", "j"]
};

menuOptions = [""];

y = tkinter.StringVar();
y.set("");
tkinter.OptionMenu(root, y, *menuOptions).place(x=5, y=5);

Как я уже говорил, функция определенно вводится остальной частью кода, но пункты меню не обновляются. Любая помощь приветствуется. Я использую самую последнюю версию python и tkinter.

Спасибо

1 Ответ

0 голосов
/ 31 января 2020

Вы можете использовать этот код:

import tkinter
def func(selection):
    global menuOptions;
    menuOptions = men[selection];
    root.update();
    return menuOptions

men = {
  "x1": ["a"],
  "x2": ["b", "c"],
  "x3": ["d", "e", "f"],
  "x4":["g", "h", "i", "j"]
};

menuOptions = [""];
y = tkinter.StringVar();
y.set("");
tkinter.OptionMenu(root, y, *menuOptions).place(x=5, y=5)
tkinter.OptionMenu(root, y, func('x1')).place(x=5, y=5) # i am changed the menu list
tkinter.Button(root, text='change menu', command=lambda: func('x1')).place(x=30, y=30) # i am bind changes to Button
...