Найти - Пользователи
Полная версия: Проблема с кодировкой в Tkinter для PythonCE
Начало » GUI » Проблема с кодировкой в Tkinter для PythonCE
1
vkopey
При наборе русского текста на КПК (на PC работает нормально) в поле Text отображаются кракозябры из двух байт. Выяснил, что это Unicode. Пришлось написать такое:

# -*- coding: UTF-8 -*-
from Tkinter import *
import os

def key_press(event):
print event.keysym
print event.keycode
if len(event.char)>1:
txt.insert(INSERT, event.char.decode('UTF-16'))
txt.configure(state=DISABLED)

def key_release(event):
txt.configure(state=NORMAL)

tk = Tk()
txt = Text(tk,height=5,width=10,font='Arial 12',wrap=WORD)
txt.pack()
if os.name=="ce":
txt.bind("<KeyPress>", key_press)
txt.bind("<KeyRelease>", key_release)
message = u"привет"
txt.insert('1.0', message)
tk.mainloop()
Вопрос: нет ли более простого и элегантного решения этой проблемы? Может кто встречался с этим раньше?
vkopey
Или лучше так?
def keyPress (self, event):
'''Нажатие клавиши. Для ввода кириллицы на WindowsCE'''
char = event.char # введенный символ
if len (char)> 1: # если UNICODE
# Вставить в текущую позицию декодированный
self.txt.insert (Tkinter.INSERT, char.decode ('UTF-16'))
return "break" # не дублировать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB