我在python 3.4中使用tkinter创建虚拟键盘。
class Keyboard(Frame):
def __init__(self, root, callback):
Frame.__init__(self, root, callback)
self.pack()
回调将是用户按下某个键时调用的函数。 所以我会像:
一样运行它def press(key):
print(key)
root = Tk()
keyb = Keyboard(root, press)
keyb.grid()
root.mainloop()
但是,这不一定是将函数按下传入键盘的正确方法,因为我收到错误"AttributeError: 'function' object has no attribute 'items'"
那么如何将此功能传递给键盘呢?
答案 0 :(得分:0)
首先,不要混用pack
和grid
。见http://effbot.org/tkinterbook/pack.htm
其次,Frame类没有callback
参数,但是在你的代码中你用一个参数调用它:
Frame.__init__(self, root, callback)
请参阅http://effbot.org/tkinterbook/frame.htm#reference了解正确用法。
您正在寻找的内容就是这样,其中callback
已完全从Keyboard
中移除:
def press(key):
print(key)
root = Tk()
keyb = Keyboard(root)
keyb.bind("<Key>", key)