地域のUnicode文字(私が使用しているスクリプトはGurmukhiとUnicode互換のフォントでRaaviです)をテキストウィジェットから取り出し、端末上に印刷します画面。テキストウィジェットにUnicode文字が表示されない
いくつかの文字列をテキストウィジェットにコピー&ペーストすると、イメージに示されているようにボックスに変換されますが、端末ウィンドウに完全な文字列が印刷されるという問題が発生します。
私はencoding
とdecoding
の機能をcodecs
から試しましたが、それも無駄になります。
Tkinterのテキストウィジェットの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」フォントがユニコードをサポートしていますか?文字列を使用することは、フォントを構成する適切な方法ではありません。おそらく、ウィジェットはあなたの文字をサポートしていないデフォルトのフォントに戻っているかもしれません。 –
入力用のフォントを使用してUnicodeテキストを処理するために、[ここ](https://stackoverflow.com/questions/31918073/tkinter-how-to-set-font-for-text)に記載されているソリューションを使用しようとしました。 。私の知る限りでは、Pythonはコーデックを使ってUnicodeテキストを扱いますが、そのエンコードとデコードの機能は動作しません。 –
文字を表示するには、フォントにグリフが必要です。それは100%正しくエンコードまたはデコードされますが、フォントが文字をサポートしていない場合、ウィジェットが文字を正しく表示することは不可能になります。あなたの最初のステップは、あなたが適切なフォントを使用していることを確認することです。 –