#python #python-3.x #tkinter #unicode #utf-8
Вопрос:
Я новичок в Python. Я экспериментирую, чтобы сделать «IDE» для запуска скрипта Python, отображающего нелатинские символы, особенно индонезийские локальные скрипты (яванский, балийский, бугинский и т.д.), Которые были включены в стандарт Unicode. Пожалуйста, подумайте об установке индонезийских шрифтов Юникода, чтобы правильно отображать символы.
Вот код:
from tkinter import *
from tkinter.filedialog import asksaveasfilename, askopenfilename
import subprocess
compiler = Tk()
compiler.title ('ᮊᮧᮙ᮪ᮕᮤᮜᮨᮁ ᮞᮥᮔ᮪ᮓ')
file_path = ''
def set_file_path(path):
global file_path
file_path = path
def save_as():
if file_path == '':
path = asksaveasfilename(filetypes=[('Python Files', '*.py')])
else:
path = file_path
with open(path, 'w') as file:
code = editor.get('1.0', END)
file.write(code)
set_file_path(path)
def open_file():
path = askopenfilename(filetypes=[('Python Files', '*.py')])
with open(path, 'r') as file:
code =file.read()
editor.delete('1.0', END)
editor.insert('1.0', code)
set_file_path(path)
def run():
if file_path == '':
save_prompt = Toplevel()
text = Label(save_prompt, text='ᮞᮤᮙ᮪ᮕᮨᮔ᮪ ᮠᮩᮜ ᮊᮧᮓᮩ ᮃᮔ᮪ᮏᮩᮔ᮪')
text.pack()
return
command = f'python {file_path}'
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
output, error = process.communicate()
code_output.insert('1.0', output)
code_output.insert('1.0', error)
menu_bar = Menu(compiler)
file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label='ᮘᮥᮊ', command=open_file)
file_menu.add_command(label='ᮞᮤᮙ᮪ᮕᮨᮔ᮪', command=save_as)
file_menu.add_command(label='ᮞᮤᮙ᮪ᮕᮨᮔ᮪ ᮔᮥ ᮞᮦᮏᮦᮔ᮪', command=save_as)
file_menu.add_command(label='ᮊᮜᮥᮃᮁ', command=exit)
menu_bar.add_cascade(label='ᮘᮨᮁᮊᮞ᮪', menu=file_menu)
run_bar = Menu(menu_bar, tearoff=0)
run_bar.add_command(label='ᮏᮜᮔ᮪ᮊᮩᮔ᮪', command=run)
menu_bar.add_cascade(label='ᮏᮜᮔ᮪ᮊᮩᮔ᮪', menu=run_bar)
compiler.config(menu=menu_bar)
editor = Text()
editor.pack()
code_output = Text(height=10)
code_output.pack()
compiler.mainloop()
Я хочу напечатать нелатинские символы, например:
print('Sundanese script')
print('ᮃᮊ᮪ᮞᮛ ᮞᮥᮔ᮪ᮓ')
к сожалению, результат показывает это:
Sundanese script
ᮃᮊ᮪ᮞᮛ ᮞᮥᮔ᮪ᮓ
или такой код, как этот:
import unicodedata
u = chr(233) chr(0x03B2) chr(0xA991) chr(0x1B11) chr(0x1B91) chr(0x1BE1)
for i, c in enumerate(u):
print(i, 'x' % ord(c), unicodedata.category(c), u[i], end=" ")
print(unicodedata.name(c))
отобразит это:
0 00e9 Ll é LATIN SMALL LETTER E WITH ACUTE
1 03b2 Ll β GREEK SMALL LETTER BETA
2 a991 Lo ꦑ JAVANESE LETTER KA MURDA
3 1b11 Lo ᬑ BALINESE LETTER OKARA
4 1b91 Lo ᮑ SUNDANESE LETTER NYA
5 1be1 Lo ᯡ BATAK LETTER CA
Но import unicodedata
сценарий может хорошо отображаться на терминале:
>>> import unicodedata
>>>
>>> u = chr(233) chr(0x03B2) chr(0xA991) chr(0x1B11) chr(0x1B91) chr(0x1BE1)
>>>
>>> for i, c in enumerate(u):
... print(i, 'x' % ord(c), unicodedata.category(c), u[i], end=" ")
... print(unicodedata.name(c))
...
0 00e9 Ll é LATIN SMALL LETTER E WITH ACUTE
1 03b2 Ll β GREEK SMALL LETTER BETA
2 a991 Lo ꦑ JAVANESE LETTER KA MURDA
3 1b11 Lo ᬑ BALINESE LETTER OKARA
4 1b91 Lo ᮑ SUNDANESE LETTER NYA
5 1be1 Lo ᯡ BATAK LETTER CA
Может ли кто-нибудь указать на проблему?
Комментарии:
1. Если я не ошибаюсь, терминалы немного сложны в этой части. Расскажите нам больше об операционной системе и оболочке, которые вы используете