ウィンドウに実行中のテキストを表示できるアプリケーションを作成していますが、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)
_AttributeError:'str' object has no attribute 'text', tkinter
_
これは、コードのどこかに、その.text()
メソッドを呼び出そうとしているstr
オブジェクトがあることを意味します。str
オブジェクトには.text()
メソッドがないため、そのエラーが発生します。
これを解決するには、変数タイプを確認してください。str
オブジェクトではなく、.text()
メソッドを持つオブジェクトを使用する必要があります。
私はこれがあなたが望むものだと思います:
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()
これはあなたが望むように結果をもたらし、あなたのコードとして書かれます。