gpt4 book ai didi

python - 在 tkinter 中输入希腊字符

转载 作者:行者123 更新时间:2023-12-03 22:29:26 25 4
gpt4 key购买 nike

我正在尝试编写一个界面(在 Python 3.8 中,使用 tkinter)来接受希腊语文本(在 Windows 10 中使用希腊语多调键盘键入)。但是,EntryText 不会接受所有键入的希腊字符:可以单独键入希腊字母,但是如果我尝试键入除尖音符以外的任何带有变音符号的字母,则会显示 ? 而不是字符。 (我认为 tkinter 接受“希腊语和科普特语”中的字符,但不接受“希腊语扩展”Unicode block 中的字符。)我知道 tkinter 可以显示这些字符,因为它们在被程序插入时显示得很好(例如 TextInstance.insert(tkinter.INSERT, 'ῆ') 插入 但只需使用键盘的快捷方式键入该字符即可插入 ? )。我需要做什么才能让 tkinter 识别键入的希腊字符?
(我还尝试通过为每个字符及其快捷方式添加 TextInstance.bind('[h', lambda *ignored: TextInstance.insert(tkinter.INSERT, 'ῆ')) 来重新绑定(bind)键盘快捷方式;这在英文键盘中有效(尽管也插入了激活事件的字符),但在希腊多调键盘上的字母键绑定(bind)根本没有激活。)

最佳答案

您可以通过绑定(bind) '<Key>' 来做到这一点。 (即,按下键盘上的任何键)到一个函数,然后使用 event.keycode 检查按下了什么键(无论您的计算机设置使用哪种键盘,它对于任何给定键都具有相同的值),然后插入预期的字符。但是,对于多键键盘快捷键,您必须跟踪以前的击键,因为传递给函数的事件对象可能只包括最后一个:即使您绑定(bind),例如 widget.bind('<Control-Key-c>', some_function) ,传递给函数的事件将包括 c但不是 Control 键——至少在 event.keycode 中,并且当键盘不能与 tkinter 一起使用时,事件的其他属性不一定可靠或信息丰富。绑定(bind)/a (带有平滑呼吸和重音标记的小写字母),我添加了每个 '<Key>'事件到一个列表,并设置函数仅在正确的 时插入字符组合 的键被按下:

import tkinter as tk

root=tk.Tk()
e=tk.Entry(root); e.pack()
keyspressed=[]
def pressKey(event,widget):
keyspressed.append(event)
print(event.keycode, event.char, "pressed.")

if len(keyspressed)>1: #to avoid an index-out-of-range error if only one key has been pressed so far
#if the last two keys were / and A, insert ἄ i.e. /u1f04
if keyspressed[-2].keycode==191 and keyspressed[-2].char!='/' and event.keycode==65:
#65 is A; 191 is /; the char check is to make sure the / is not being used
# to type / on a different keyboard.
widget.insert(tk.INSERT,'\u1f04') #insert the character
return 'break' #this stops ? from being typed

e.bind("<Key>",lambda event: pressKey(event, e))

root.mainloop()

关于python - 在 tkinter 中输入希腊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63542060/

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