我正在制作一个允许在窗口中显示正在运行的文本的应用程序,但是刚刚开始解析OOP,我想知道如何解决此错误...还有一个示例需要,它将显示在脚本下方,并显示错误。
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)
答案 0 :(得分:1)
AttributeError:'str' object has no attribute 'text', tkinter
这意味着在代码中的某个地方,您有一个str
对象,您正在尝试对其调用其.text()
方法。
由于您的str
对象没有.text()
方法,因此会出现该错误。
要解决此问题,请检查变量类型,不应使用str
对象,而应使用具有.text()
方法的对象
答案 1 :(得分:0)
我想这就是你想要的:
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()
这将根据您的需要生成,并作为您的代码编写。