Обработка событий из меню файла

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

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

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

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

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.

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

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

Спасибо!


person user974703    schedule 20.03.2012    source источник


Ответы (1)


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

...command=lambda l=statusLabel, self.statusUpdater(l, "Insert Triggered"))
person Bryan Oakley    schedule 20.03.2012