[英]How do i combine this keyboard switching function with login screen in Tkinter
[英]How do I quit a keyboard event in Tkinter?
我要发出键盘快速操作命令。当我按“ b”时,打印“ b”;当我按“ s”时,打印“ s”。这是我的代码:
# -*- coding: utf-8 -*-
from Tkinter import *
import tkFont
root = Tk()
def pri(event):
print event.char
def rb():
root.bind('<KeyPress-b>',pri)
root.bind('<KeyPress-s>',pri)
v = IntVar()
def callbackcheck():
if v.get():
rb()
Cb = Checkbutton(root,variable = v,text = 'Hello',onvalue = 1,offvalue = 0,command = callbackcheck)
Cb.pack()
root.mainloop()
当我将Checkbutton设置为“ on”时,键盘事件被激活。但是当我将Checkbutton设置为“ off”时,键盘事件无法退出,而当我按下“ b”时,仍然打印“ b”。实际上,键盘事件总是运行一旦它被激活。我不知道如何退出键盘事件。您有什么想法吗?
接下来是一个类似的问题:当我在Tkinter中使用条目时,我只想要输入数字,而不是字母,并且找到了一种使用validateCommand
。但是,当我单击当前窗口中的其他区域或输入时,无法退出条目小部件。我想单击其他窗口小部件或输入字母时退出输入窗口小部件,如何实现此目标?
已编辑
正如Zetys指出的那样,您必须取消键盘与键盘的绑定。 根据您的代码:
# -*- coding: utf-8 -*-
from Tkinter import *
import tkFont
root = Tk()
def pri(event):
print (event.char)
def rb():
if v.get():
root.bind('<KeyPress-b>',pri)
root.bind('<KeyPress-s>',pri)
else:
root.unbind('<KeyPress-b>')
root.unbind('<KeyPress-s>')
v = BooleanVar()
Cb = Checkbutton(root,variable = v,text = 'Hello', command = rb)
Cb.pack()
root.mainloop()
我改变了几件事:
将Checkbutton设置为off时,应使用unbind()
删除绑定。
if v.get():
rb()
else:
root.unbind('<KeyPress-b>')
root.unbind('<KeyPress-s>')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.