Обработка событий из файлового меню - PullRequest
1 голос
/ 20 марта 2012

Я пытаюсь закодировать программу с обычным файловым меню. (например, Файл, Редактировать, Просмотреть и т. д.).

Я хочу, чтобы действие, которое они выполняют в этом меню, обновляло мою строку состояния (метку).

Проблема в том, как у меня сейчас настроена система, я полагаю, что она выполняет команду, а затем пытается принять результат за то, что он должен делать.

В настоящее время пункт меню определен так:

fileMenu.add_command(label="Insert", command=self.statusUpdater(statusLabel,"Insert   Triggered")

И функция statusUpdater определяется так:

 def statusUpdater(self,status,commandName):

    status.config(text=commandName)
    status.update_idletasks()

Таким образом, проблема заключается в том, что в самом начале программы статус меняется на «Вставить сработавший». То, что я хочу, это для того, чтобы быть счастливым только после того, как я фактически нажал «Вставить»

Из подсказок, которые я видел в других местах, кажется, что мне нужен какой-то способ, чтобы передать и обработать событие нажатия Insert.

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

Все, что мне нужно, - это функция, которая вызывается при событии click и знает, какая команда fileMenu запустила его.

Спасибо!

1 Ответ

0 голосов
/ 20 марта 2012

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

...command=lambda l=statusLabel, self.statusUpdater(l, "Insert Triggered"))
...