私は、継続的に更新されたTXTファイルから読み込み、しばらくの間毎回更新するGUIをまとめようとしています。これまでのところ私は、最初の部分で成功したと私はループに全部「をroot.afterを()」を使用することができないのですが、それはNameErrorになり:root.afterがfunction_nameを見つけることができません
import tkinter as tk
root = tk.Tk()
class App:
def __init__(self, root):
frame = tk.Frame(root)
frame.pack()
iAutoInEN = 0
iAvailableEN = 0
self.tkAutoInEN = tk.StringVar()
self.tkAutoInEN.set(iAutoInEN)
self.tbAutoInEN = tk.Label(root, textvariable=self.tkAutoInEN)
self.tbAutoInEN.pack(side=tk.LEFT)
self.button = tk.Button(frame, text="Start", fg="red",
command=self.get_text)
self.button.pack(side=tk.LEFT)
def get_text(self):
fText = open("report.txt") #open a text file in the same folder
sContents = fText.read() #read the contents
fText.close()
# omitted working code that parses the text to lines and lines
# to items and marks them with numbers based on which they are
# allocated to a variable
if iLineCounter == 1 and iItemCounter == 3:
iAutoInEN = int(sItem)
self.tkAutoInEN.set(iAutoInEN)
root.after(1000,root,get_text(self))
app = App(root)
root.mainloop()
try:
root.destroy() # optional; see description below
except:
pass
最初のインスタンスが問題なく実行され、値を更新します0からTXTファイル内の番号へのが、エラーを伴う
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\...\Python35\lib\tkinter\__init__.py", line 1549, in __call__
return self.func(*args)
File "C:/.../pythonlab/GUI3.py", line 117, in get_text
self.after(1000,root,get_text())
NameError: name 'get_text' is not defined
EDIT:推奨 "self.after(1000年、self.get_text)"
class App:
...
def get_text(self):
fText = open("report.txt") #open a text file in the same folder
sContents = fText.read() #read the contents
fText.close()
# omitted code
if iLineCounter == 1 and iItemCounter == 3:
iAutoInEN = int(sItem)
self.tkAutoInEN.set(iAutoInEN)
self.after(1000,self.get_text)
に変更
エラーが
Traceback (most recent call last):
File "C:/.../pythonlab/GUI3.py", line 6, in <module>
class App:
File "C:/.../pythonlab/GUI3.py", line 117, in App
self.after(1000, self.get_text)
NameError: name 'self' is not defined
はまた、これはPythonで私の非常に最初のプログラム(だけではなく)でご検討ください変わるので、あなたは、もう少し明確な回答であるならば、私は感謝(例えば、インデントエラーを指摘するときは、コードの正確な行を参照してください)。
あなたのを修正インデント。メソッドはインデントされていないので、クラスの一部ではありません。 –
ありがとうございます - どの方法を正確に言及していますか?これは基本的に私の最初のPythonプログラムであり、私が行っているので学んでいるので、まだかなり失われています... :) – Eleshar
インデントの問題は、編集時にテリーによって修正されました。以前は、あなたの 'init'と' get_text'関数はインデントされていなかったので、Appクラスに属していませんでした。 Appクラスは役に立たなかった。コンピュータのコードを編集したコードと一致するように変更して、今後の問題を回避してください。 – Xetnus