(Очень просто) Получить следующий элемент в меню?

Я пытаюсь написать очень простой скрипт. Как видите, я большой нуб в Python. Я создал меню параметров Tkinter, содержащее 3 параметра. Когда я нажимаю клавишу n, я хочу, чтобы в моем меню был установлен следующий параметр. Таким образом, значение по умолчанию — банан, когда я нажимаю n один раз, это должно быть яблоко, затем кокос, затем банан и т. д. Все работает правильно, я просто не знаю, что написать, чтобы получить следующий вариант.

fruitmenu = tk.OptionMenu(root, fruit, "banana", "apple", "coco")

fruit.set("banana") # default value

while True:
        root.update()
        if keyboard.is_pressed('n'):   
                print('Next Fruit')
                ???  
       

Заранее спасибо.


person user14210709    schedule 02.09.2020    source источник
comment
Взгляните на Привязки и события.   -  person figbeam    schedule 02.09.2020
comment
Имейте в виду, что использование while заморозит ваш графический интерфейс на время выполнения этого цикла.   -  person Cool Cloud    schedule 02.09.2020


Ответы (1)


Во-первых, keyboard.is_pressed('n') это root.bind('n', func). Во-вторых, чтобы выбрать следующую опцию в меню, вы можете сохранить эти опции в списке или другом контейнере, а затем проверить, в какой из них вы находитесь, и перейти к следующему. Поместите эту логику в функцию обратного вызова.

fruits = '0123456789ABCDEF' # or a list ['0', '1'...] etc.
fruitmenu = tk.OptionMenu(root, fruit, *fruits)
def func(event=None):
    fruit.set(fruits[(fruits.index(fruit.get())+1)%len(fruits)])
person TigerhawkT3    schedule 02.09.2020
comment
Спасибо большое чувак, все работает. На самом деле мне пришлось использовать keyboard.is_pressed('n'), потому что мне нужно, чтобы нажатие клавиши распознавалось, даже когда я работаю в другой программе. - person user14210709; 03.09.2020