Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Проблема с кодировкой в Tkinter для PythonCE [RSS Feed]

#1 Июль 21, 2011 17:13:00

vkopey
От:
Зарегистрирован: 2010-09-26
Сообщения: 116
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблема с кодировкой в Tkinter для PythonCE

При наборе русского текста на КПК (на 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()
Вопрос: нет ли более простого и элегантного решения этой проблемы? Может кто встречался с этим раньше?



Офлайн

#2 Авг. 11, 2011 01:31:34

vkopey
От:
Зарегистрирован: 2010-09-26
Сообщения: 116
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблема с кодировкой в Tkinter для PythonCE

Или лучше так?

def keyPress (self, event):
'''Нажатие клавиши. Для ввода кириллицы на WindowsCE'''
char = event.char # введенный символ
if len (char)> 1: # если UNICODE
# Вставить в текущую позицию декодированный
self.txt.insert (Tkinter.INSERT, char.decode ('UTF-16'))
return "break" # не дублировать



Офлайн

  • Начало
  • » GUI
  • » Проблема с кодировкой в Tkinter для PythonCE[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version