Найти - Пользователи
Полная версия: UnicodeDecodeError и Tkinter
Начало » Python для новичков » UnicodeDecodeError и Tkinter
1
UsCr
Здравствуйте. Вот програма:
# -*- 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)
Кстати, без графики всё работает как надо.
Nik
word_secret = u'хлеб'
UsCr
Простите, погорячился.
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