Не понимаю этого AttributeError: у объекта 'str' нет атрибута 'text' - PullRequest
0 голосов
/ 24 декабря 2018

Я делаю приложение, которое позволит отображать бегущий текст в окне, но только начал анализировать ООП, и я хотел бы знать, как исправить эту ошибку ... Есть также пример, который работает какнеобходимо, он будет показан ниже сценария с ошибкой.

class Main_Desktop():

    def __init__(self,parent,i,text):
        self.i=i
        self.parent=parent
        self.ticker=Text(parent,height=1,width=100)
        self.text=text
        self.ticker.pack()
        self.txt(i)

    def txt(self, i):
        i = 0
        self.text = ('' * 20) + self.text + ('' * 20)
        x = self.text[i:i + 20]
        self.ticker.insert("1.1", x)
        if i == len(self.text):
            i = 0
        else:
            i = i + 1
        self.ticker.after(100, lambda: Main_Desktop.txt(self.text[i:i + 20], i))

Вот пример, и он работает по мере необходимости:

root =Tk()
text="string"
text = (' '*20) + text + (' '*20)
ticker = Text(root, height=1, width=20)
ticker.pack()

i = 0
def command(x, i):
    ticker.insert("1.1", x)
    if i == len(text):i = 0
    else:i = i+1
    root.after(100, lambda:command(text[i:i+20], i))

command(text[i:i+20], i)

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Я думаю, что это то, что вы хотите:

from tkinter import *


class Main_Desktop():

    def __init__(self, parent, i, text):
        self.parent = parent
        self.i = i
        self.text = text
        self.ticker = Text(parent, height=1, width=20)
        self.text = (' ' * 20) + self.text + (' ' * 20)
        self.ticker.pack()
        self.txt(self.text[i:i + 20], i)

    def txt(self, x, i):

        self.ticker.insert("1.1", x)
        if i == len(self.text):
            i = 0
        else:
            i = i + 1
        self.parent.after(100, lambda: self.txt(self.text[i:i + 20], i))

root = Tk()
i = 0
text ="string"
app = Main_Desktop(root, i, text)
root.mainloop()

Это приводит к тому, что вы хотите, и записывается как ваш код.

0 голосов
/ 24 декабря 2018
AttributeError:'str' object has no attribute 'text', tkinter

Это означает, что где-то в вашем коде у вас есть объект str, для которого вы пытаетесь вызвать его метод .text().
Поскольку у вашего str объекта нет .text() метод, вы получите эту ошибку.

Чтобы решить эту проблему, проверьте типы переменных, вам следует использовать не объект str, а объект, который имеет .text() метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...