Я использую pyglet 1.5.31 (glooey не работает с более поздними версиями) и glooey 0.3.6. Я создаю подкласс EditableLabel и пытаюсь реализовать проверку, чтобы убедиться, что это число при каждом его редактировании:
Код: Выделить всё
import pyglet
import glooey
class Label(glooey.EditableLabel):
def __init__():
super().__init__(*args, **kwargs)
self.previous_text = ""
self.push_handlers(on_edit_text=self.prohibit_entry)
def prohibit_entry(self, label):
update_text = False
if label.text == "":
update_text = True
else:
if self.isFloat(label.text): #Function to try to parse string as float and return false if fails
update_text = True
if not update_text:
self.text = self.previous_text
else:
self.previous_text = label.text
Этот код завершается с ошибкой: исключение игнорируется при вызове функции обратного вызова ctypes: с последним вызовом обратной трассировки как
Код: Выделить всё
if _grapheme_break(text[invalid_start - 1], text[invalid_start]):
~~~~^^^^^^^^^^^^^^^
Я получил логику проверки для работы с другими обработчиками событий, например с on_unfocus, но не могу с on_edit_text. Кроме того, я подозреваю, что проблема связана с какой-то кареткой, потому что ошибка возникает только после ввода нечислового И другого символа. Если я наберу не число, клавишу Backspace, а ЗАТЕМ попытаюсь ввести другой символ, ошибка не появится. Однако я не знаком с пиглетом или мрачным, поэтому буду очень благодарен за помощь.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... pyglet-err