Определите, какая Кнопка была нажата в Tkinter?

Не то, чтобы я нашел, не делая некоторой работы. Я полагаю, что это вызвано тем, что XmlSerializer, который сгенерирован отражение использования для генерации нового класса (который находится в новом блоке, поэтому не видьте internal участник/методы).

может быть некоторый пробег в использовании XmlSerialization PreCompilier, чтобы генерировать код, и затем изменить его во внутренний класс в Ваших целях, таким образом, Вы тогда сделали бы что-то как:

XmlSerializer serializer = new MyPersonXmlSerializer();

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

9
задан nbro 18 March 2015 в 12:02
поделиться

2 ответа

You can use lambda to pass arguments to a command:

def populateMethod(self, method):
    print "method:", method

for method in ["one","two","three"]:
    button = Button(self.methodFrame, text=method, 
        command=lambda m=method: self.populateMethod(m))
    button.pack({'fill': 'x', 'expand': 1, 'padx': 5, 'pady': 3})
18
ответ дан 4 December 2019 в 10:32
поделиться

Похоже, что в метод команды не передается какой-либо объект события.

Я могу придумать два обходных пути:

  • связать уникальный обратный вызов с каждым вызовом кнопки

  • button.bind ('', self.populateMethod) вместо передачи self.populateMethod как команды . Затем self.populateMethod должен принять второй аргумент, который будет объектом события.

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

2
ответ дан 4 December 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: