gpt4 book ai didi

python - 如何使 Tkinter KeyRelease 事件始终提供大写字母?

转载 作者:行者123 更新时间:2023-11-30 23:46:23 24 4
gpt4 key购买 nike

当我尝试在 Tkinter Text 小部件上使用 KeyRelease 事件时,它有时在 event.char 中提供小写字符,但在文本小部件中显示大写字符。当我轻快地按下 Shift 按钮,然后按下一个字母时,就会发生这种情况。如何使用 Tkinter Text 小部件上的 KeyRelease 事件可靠地捕获大小写正确的字符?

这是我在 MacBook Pro 上测试的示例代码:

from Tkinter import *

class App:

def __init__(self):

# create application window
self.root = Tk()

# add frame to contain widgets
frame = Frame(self.root, width=768, height=576,
padx=20, pady=20, bg="lightgrey")
frame.pack()

# add text widget to contain text typed by the user
self.text = Text(frame, name="typedText", bd="5", wrap=WORD, relief=FLAT)
self.text.bind("<KeyRelease>", self.printKey)
self.text.pack(fill=X)

"""
printKey sometimes prints lowercase letters to the console,
but upper case letters in the text widget,
especially when I lightly and quickly press Shift and then some letter
on my MacBook Pro keyboard
"""
def printKey(self, event):
print event.char

def start(self):
self.root.mainloop()

def main():
a = App()
a.start()

if __name__ == "__main__":
sys.exit(main())

最佳答案

发生的情况是您在释放字母键之前释放了 Shift 键。插入字符时会按下 Shift 键,这就是为什么小部件会获得大写字符,但在处理 keyrelease 绑定(bind)时,Shift 已经被释放,因此您会看到小写字符。

如果您想打印正在插入的内容,请绑定(bind)到按键而不是释放。

关于python - 如何使 Tkinter KeyRelease 事件始终提供大写字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com