Je suis en train de créer une application qui permettra d'afficher un texte en cours dans la fenêtre, mais je viens juste de commencer à analyser la POO, et j'aimerais savoir comment corriger cette erreur ... Il existe également un exemple qui fonctionne au besoin, il sera affiché sous le script avec une erreur.
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))
Voici un exemple et cela fonctionne selon les besoins:
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)
AttributeError:'str' object has no attribute 'text', tkinter
Cela signifie que quelque part dans votre code, vous avez un objet str
sur lequel vous essayez d'appeler la méthode .text()
.
Comme votre objet str
ne possède pas de méthode .text()
, vous obtenez cette erreur.
Pour résoudre ce problème, vérifiez vos types de variable, vous ne devriez pas utiliser d'objet str
, mais plutôt un objet doté de la méthode .text()
.
Je pense que c'est ce que vous voulez:
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()
Cela résulte comme vous voulez et est écrit comme votre code.