键“1”到“9”的自动热键绑定可重新分配属性的值

时间:2017-06-15 22:07:04

标签: python lambda tkinter

我想将密钥1绑定到9(尽可能少)以使每个密钥更改我班级中的当前类别。

我的代码:

from tkinter import *


class MyCanvas:
    def __init__(self,
                 categories):
        self.categories = categories
        self._current_category = categories[0]
        self._window = None

        self._main()

    def _main(self):
        master = Tk()
        self._window = Canvas(master, width=200, height=100)
        self._window.pack()

        self._assign_each_category_to_hotkey()
        mainloop()

    def _assign_each_category_to_hotkey(self):
        for i in range(len(self.categories)):
            self._window.bind(str(i+1), lambda e, c=self.categories[i]: self._change_category(c))

    def _change_category(self, category):
        print(category)
        self._current_category = category


if __name__ == "__main__":
    MyCanvas(categories=['tree', 'monster'])

我期待热键“1”,“2”等是可以接受的。

当我用上面的示例代码分别按键1或2时,我希望treemonster在控制台中打印,但似乎没有任何事情发生。

当我运行我的代码时,似乎没有调用_change_category方法。我怎么能改变这个?

full code

0 个答案:

没有答案