如何绑定根以调用类内的方法

1 投票
1 回答
906 浏览
提问于 2025-04-16 20:14

这是我程序的基本布局:

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

接下来,我在类 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

你的实验可能没有成功,因为默认情况下,框架是会自动获取键盘焦点的。你可以尝试加上 root.focus(),这样键盘事件就会被发送到根窗口。

你问题的另一部分是关于如何进行绑定的。因为 moveIt 是 App 类的方法,而 'app' 是这个类的一个实例,所以你需要这样做:

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

撰写回答