我正在使用區域語言文本編輯器,它從文本小部件中獲取區域Unicode字符(我使用的腳本是Gurmukhi和Unicode兼容字體是Raavi),並將其打印在終端上屏幕。文本小部件不顯示Unicode字符
現在問題出現了,當我複製並粘貼一些字符串到文本小部件時,它會轉換成如圖所示的框,但它會在終端窗口上打印完美的字符串。
雖然我試過encoding
和decoding
功能從codecs
,但是,這也是徒勞。
我找不到任何與Tkinter中Text插件的Unicode輸入機制有關的答案。
如何在文本小部件中顯示完美的unicode字符串?
這裏是我的代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tkinter.font as tkFont
from tkinter import *
def retrieve_input(self):
inputValue = content_text.get("1.0", "end-1c")
print(inputValue)
root = Tk()
root.call('encoding', 'system', 'utf-8')
customFont = tkFont.Font(family='Raavi', size=17)
root.title("Unicode Handling")
root.geometry('400x200+150+200')
content_text = Text(root, wrap='word', font=customFont)
content_text.configure(font=customFont)
content_text.focus_set()
content_text.pack(expand='yes', fill='both')
scroll_bar = Scrollbar(content_text)
content_text.configure(yscrollcommand=scroll_bar.set)
scroll_bar.config(command=content_text.yview)
scroll_bar.pack(side='right', fill='y')
root.bind("<space>", retrieve_input)
root.mainloop()
下面是輸入和輸出:
你確定你正在使用支持Unicode的「Raavi」字體?使用字符串不是配置字體的正確方法。也許這個小部件會回落到一個不支持你的角色的默認字體。 –
我試圖使用給定的解決方案[這裏](https://stackoverflow.com/questions/31918073/tkinter-how-to-set-font-for-text)來處理輸入字體的Unicode文本。據我所知,Python使用編解碼器處理Unicode文本,但其編碼和解碼功能不起作用。 –
要顯示一個字符,字體必須有一個字形。它可以100%正確編碼或解碼,但如果字體不支持字符,那麼小部件將不可能正確顯示字符。你的第一步是確保你使用的是合適的字體。 –