我想制作一个将两个输入绑定到一个输出的Tkinter程序,我尝试过这样:
def hh(event):
print('hello')
root.bind(<Returna>, hh)
和
def hh(event):
print('hello')
root.bind('<Return, KeyPress-a>')
但是它没有按预期工作。
有人可以告诉我如何让<Shift>
和<KeyPress-a>
一起触发hh()
吗?
谢谢!
第一个错误
Traceback (most recent call last):
File "tktest.py", line 19, in <module>
root.bind('<Returna>', hh)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/`__init__.`py", line 1251, in bind
return self._bind(('bind', self._w), sequence, func, add)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/`__init__`.py", line 1206, in _bind
self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "Returna"
第二个错误
Traceback (most recent call last):
File "tktest.py", line 19, in <module>
root.bind('<Return, KeyPress-a>', hh)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/__init__.py", line 1251, in bind
return self._bind(('bind', self._w), sequence, func, add)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/__init__.py", line 1206, in _bind
self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "Return,"
答案 0 :(得分:1)
您必须使用字符串'<Return>a'
并添加函数名称
root.bind('<Return>a', hh)
,但是当您在hh()
之后直接按a
时,它将运行Enter
import tkinter as tk
def hh(event):
print('hello')
root = tk.Tk()
root.bind('<Return>a', hh)
root.mainloop()
如果要在按hh()
或Enter
时运行a
,则需要两个绑定
root.bind('<Return>', hh)
root.bind('a', hh)
import tkinter as tk
def hh(event):
print('hello')
root = tk.Tk()
root.bind('<Return>', hh)
root.bind('a', hh)
root.mainloop()
编辑:
在编辑过的问题中,我看到了<Shift>
,所以也许必须是Shift + a
?它需要A
root.bind('A', hh) # Shift + a
在第二个错误中,我看到Return,
,但也许必须是Shift + ,
,它的特殊名称为<less>
root.bind('<less>', hh) # Shift + ,
以.bind() not working for shift-key binds?为例,我展示了显示keysym
作为按下键的代码,您可以在bind()
中使用该代码
import tkinter as tk
def test(event):
print('keysym:', event.keysym)
root = tk.Tk()
root.bind('<Key>', test)
root.mainloop()
您可以在文档Tcl/Tk - keysym
中找到一些名称但是keysym
或Return + a
并没有特殊的Return + ,
,因为这是不寻常的组合,可能需要按住Return
/ Enter
然后按a
或,
。或者按Return
,释放Return
,然后按a
或,