Tkinter Entry组件输入印地语/梵语显示问号问题求助
解决Tkinter输入框显示梵语/印地语为问号的问题
问题根源在于你使用的Times字体不包含梵语(天城文)字符集,Tkinter无法渲染这些字符时就会显示问号。只需为输入框和列表框指定支持天城文的字体即可解决。
以下是修复后的完整代码:
from tkinter import * lst = ['रामायणसारः', 'देवयाज्ञिकपद्धतिः', 'तर्कसङ्ग्रहः',] def check_input(event): value = event.widget.get() if value == '': data = lst else: data = [] for item in lst: # 天城文无大小写区分,直接匹配原字符 if value in item: data.append(item) update(data) def update(data): menu.delete(0, END) for value in data: menu.insert(END, value) def fillout(event): combo_box.delete(0, END) combo_box.insert(0, menu.get(menu.curselection())) # 初始化主窗口 root = Tk() root.geometry('600x400') root.title('梵语联想输入框') # 指定支持天城文的字体,可根据系统选择:Noto Sans Devanagari(跨平台)、Mangal(Windows默认)、Sanskrit 2003 devanagari_font = ("Noto Sans Devanagari", 12) combo_box = Entry(root, font=devanagari_font) combo_box.place(relx=0.20, rely=0.4, relwidth=0.45, relheight=0.1) combo_box.bind('<KeyRelease>', check_input) menu = Listbox(root, font=devanagari_font) menu.place(relx=0.20, rely=0.5, relwidth=0.45, relheight=0.1) menu.bind("<<ListboxSelect>>", fillout) update(lst) root.mainloop()
关键修改说明:
- 字体替换:将原
Times字体替换为支持天城文的字体,若系统没有对应字体需先安装。 - 移除冗余转换:梵语无大小写概念,删除原代码中多余的
lower()转换,直接匹配原字符。 - 补全窗口代码:原代码缺失主窗口初始化和主循环,已补全确保代码可正常运行。
内容的提问来源于stack exchange,提问作者Pushpak Mangal
相关产品推荐
相关产品推荐

