Как я нашел из других вопросов здесь, в StackOverflow (см. здесь ), в Tkinter есть ошибка при использовании Unicode для Emojis.
Я реализовал функцию, которая исправляет отображение Unicode, так что я могу отображать эмодзи просто отлично, используя Tkinter. Однако Tkinter по-прежнему выдает исключение, когда я пытаюсь получить текст из виджета ввода (текстового поля), который содержит смайлики, говорящие о том, что он не может декодировать строку utf-8.
Я подозреваю, что смогу обойти это, используя tk.call
для прямого доступа к базовому интерпретатору Tcl, поскольку другой вопрос заставляет меня думать, что ошибка в Tkinter, а не в Tcl. Я не знаю, какой-либо Tcl не смог найти документацию о том, как использовать tk.call
... Я иду по правильному пути или есть лучшее решение?
Вот трассировка стека для cra sh:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files (x86)\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:/Users/phili/PycharmProjects/pychat\gui.py", line 61, in __send
self.add_message('You: ' + replace_emoji(self.__msg_entry.get()))
File "C:\Program Files (x86)\Python37-32\lib\tkinter\__init__.py", line 2682, in get
return self.tk.call(self._w, 'get')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 0: invalid continuation byte