Я пытаюсь получить длину текста внутри текстового виджета, и len()
не работает.
Я пытался сделать это:
variable = len(text_widget)
который не работает.
Это ошибка, которую я получаю:
AttributeError: Text instance has no attribute '__len__'
Это творение text_widget
:
self.text_widget= Text(self.frame1, font=("Arial", 20), fg = "white", bg = "#DAA520", height = 12)
Не могли бы вы показать нам творение вашего text_widget
?
@funie200 здесь self.text_widget= Text(self.frame1, font=("Arial", 20), fg = "white", bg = "#DAA520", height = 12)
чтобы получить текст из использования виджета
actual_text = text_widget.get(1.0, END)
тогда вы можете сделать
len(actual_text)
Использование END
даст вам на один символ больше, чем фактическое содержимое, потому что текстовый виджет всегда добавляет новую строку после всего текста (например, если вы наберете «привет», вы получите строку длиной 6.
@BryanOakley, это правда - хорошая мысль! Конечно, 6 — это правильная длина, потому что в ответ вы получили «hello\n». Вы можете или не можете вызвать для него strip() или что-то в этом роде, чтобы избавиться от лишней новой строки (и если это так, сделайте это, прежде чем вызывать len, конечно) - это зависит от того, что вы хотите с ним делать. В общем случае вы получаете новую строку и [правильную] длину, включая ее.
Конечно, 6 — это правильная длина того, что возвращает get
, но это не правильная длина того, что ввел пользователь.
Вы можете попробовать
type()
проверить, так ли это на самом делеstr