Не то, чтобы я нашел, не делая некоторой работы. Я полагаю, что это вызвано тем, что XmlSerializer
, который сгенерирован отражение использования для генерации нового класса (который находится в новом блоке, поэтому не видьте internal
участник/методы).
может быть некоторый пробег в использовании XmlSerialization PreCompilier, чтобы генерировать код, и затем изменить его во внутренний класс в Ваших целях, таким образом, Вы тогда сделали бы что-то как:
XmlSerializer serializer = new MyPersonXmlSerializer();
другая опция (и вероятно предпочтительный) состоит в том, чтобы реализовать IXmlSerializable, который будет вести автоматически сгенерированный код, чтобы сделать правильную вещь.
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})
Похоже, что в метод команды не передается какой-либо объект события.
Я могу придумать два обходных пути:
связать уникальный обратный вызов с каждым вызовом кнопки
button.bind ('
вместо передачи self.populateMethod как команды
. Затем self.populateMethod должен принять второй аргумент, который будет объектом события.
Предполагая, что этот второй аргумент называется event
, event.widget
является ссылкой на кнопку, которая был нажат.