Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2010 15:01:09

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeDecodeError и Tkinter

Здравствуйте. Вот програма:

# -*- coding: utf-8 -*-
from Tkinter import *

word_secret = 'хлеб'

def start(event):

cows, bulls = cow_bull(enterfill.get())
mainbox.insert(END, 'Тут '+str(len(cows))+ \
' коров и '+str(len(bulls))+' быков.\n')

def cow_bull(word_enter):
#Количество быков и коров в введённом слове
#word_enter введённое слово
#word_secret загаданное слово
cows = [] #Это "буквы-коровы"
bulls = [] #Это "буквы-быки"
for i in range(len(word_enter)): #перебор по всем буквам введенного
if word_enter[i] in word_secret: #если буква есть в загаданном
if (word_enter[i] == word_secret[i]): # и стоит на своем месте
bulls.append(word_enter[i]) #она бык
else: #если не на своем месте
cows.append(word_enter[i]) #корова
return cows, bulls


#---------------------------------------------------------------------------------------------
root = Tk()
root.title("Быки и коровы")

frame_1 = Frame(root)
frame_2 = Frame(root)

mainbox = Text(frame_1, width = 50, height = 25) #Окно вывода
badchars = Text(frame_2, width = 25, height = 25) #Буквы, которых нет в слове
enterfill = Entry(frame_1, width = 50) #Окошко для ввода
btn_submit = Button(frame_2, text="Ввод")

frame_1.pack(side = LEFT)
frame_2.pack(side = LEFT)

mainbox.pack(side = TOP)
badchars.pack(side = TOP)
enterfill.pack(side = TOP)
btn_submit.pack(side = LEFT)

btn_submit.bind("<Button-1>", start)
enterfill.bind("<Return>", start)

root.mainloop()
Это игра “Быки икоровы”. Она ещё не дописана. Проблема вот в чём:
Если “игровой процесс” осуществляется на английском языке, то всё замечательно. Но если вводить слово на русском, то UnicodeDecodeError.
Полный текст ошибки:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "C:\Python25\lib\bull_.py", line 8, in start
cows, bulls = cow_bull(enterfill.get())
File "C:\Python25\lib\bull_.py", line 19, in cow_bull
if word_enter[i] in word_secret:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)
Кстати, без графики всё работает как надо.



Офлайн

#2 Фев. 17, 2010 15:21:31

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeDecodeError и Tkinter

word_secret = u'хлеб'



Офлайн

#3 Фев. 17, 2010 16:00:28

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeDecodeError и Tkinter

Простите, погорячился.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version