Как связать корень для вызова метода внутри класса - PullRequest
1 голос
/ 25 июня 2011

Это базовый макет моей программы:

class App(CheckInfo):
    def __init__(self, master):
        CheckInfo.__init__(self)
        master.title("Example")
        .....

После этого у меня есть метод i (внутри класса App), который выглядит следующим образом:

    def moveIt(self):
        print "It doesnt work"

Внизу (снаружи, если класс) у меня есть:

root = Tk()
app = App(root)
#root.bind("<Up>",) # I don't know how this works
root.mainloop()

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

Я не уверен, как это делается.

Мои догадки пока не достигли большого прогресса.

Я думаю, мне, возможно, понадобится поместить событие в: moveIt(self) => moveIt(self,event)

Но я понятия не имею, как поместить метод в качестве аргумента в привязку, поскольку:

root.bind("<Up>",moveIt) #doesnt work
root.bind("<Up>",self.moveIt) #obviously not
root.bind("<Up>",root.moveIt) #donsnt make much sense

Любые идеи приветствуются! Я надеюсь, что я разместил все соответствующие коды, в противном случае, пожалуйста, попросите любые необходимые разъяснения.

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

1 Ответ

1 голос
/ 25 июня 2011

Ваши эксперименты могут не работать, потому что кадр по умолчанию не имеет фокус клавиатуры. Попробуйте добавить root.focus (), чтобы события клавиатуры были направлены в корневое окно.

Другая часть вашего вопроса связана с тем, как сделать связывание. Так как moveIt является методом класса App, а 'app' является экземпляром этого класса, вам нужно:

root.bind("<Up>", app.moveIt)
...