Python “状态对象没有属性”;“装载”;
我正在使用面向对象的设计在Tkinter的进度条上工作,我遇到了一个问题Python “状态对象没有属性”;“装载”;,python,tkinter,progress-bar,Python,Tkinter,Progress Bar,我正在使用面向对象的设计在Tkinter的进度条上工作,我遇到了一个问题 from tkinter import * from tkinter import ttk class Status: def __init__(self): self.root = Tk() self.root.geometry("400x20") self.loading = ttk.Progressbar(self.root, length=15, value
from tkinter import *
from tkinter import ttk
class Status:
def __init__(self):
self.root = Tk()
self.root.geometry("400x20")
self.loading = ttk.Progressbar(self.root, length=15, value=0, orient=HORIZONTAL, command=self.start_progress())
self.loading.pack(fill=X)
self.root.mainloop()
def start_progress(self):
self.loading.start(10)
bar = Status()
我应该得到一个无限加载的进度条,但是相反,我得到了
"self.loading.start(10)
AttributeError: 'Status' object has no attribute 'loading'".
我想要的是进度条自动更新,而无需使用任何按钮。它应该满了,满了就停了。通常您会创建一个
IntVar
,并将其设置为进度条的变量。然后,您可以跟踪IntVar
上的更改,并在必要时停止
from tkinter import *
from tkinter import ttk
class Status:
def __init__(self):
self.root = Tk()
self.root.geometry("400x20")
self.var = IntVar()
self.loading = ttk.Progressbar(self.root, length=15, variable=self.var, orient=HORIZONTAL)
self.loading.pack(fill=X)
self.var.trace("w",self.trace_method)
self.start_progress()
self.root.mainloop()
def start_progress(self):
self.loading.start(10)
def trace_method(self,*args):
if self.var.get() >= 99: #when it reaches 100 it would go back to 0
self.loading.stop()
bar = Status()
通常,您会创建一个IntVar
,并将其设置为Progressbar
的变量。然后,您可以跟踪IntVar
上的更改,并在必要时停止
from tkinter import *
from tkinter import ttk
class Status:
def __init__(self):
self.root = Tk()
self.root.geometry("400x20")
self.var = IntVar()
self.loading = ttk.Progressbar(self.root, length=15, variable=self.var, orient=HORIZONTAL)
self.loading.pack(fill=X)
self.var.trace("w",self.trace_method)
self.start_progress()
self.root.mainloop()
def start_progress(self):
self.loading.start(10)
def trace_method(self,*args):
if self.var.get() >= 99: #when it reaches 100 it would go back to 0
self.loading.stop()
bar = Status()
乍一看,您的代码对我来说似乎是正确的,您能否显示用于调用和使用Status类的部分的更多信息?我刚刚编辑了它以显示从命令中丢失()
。它需要是command=self.start\u progress
,而不是command=self.start\u progress()
这样做,现在它说\u tkinter.TclError:unknown option“-command”
我认为进度条不接受命令回调。通过传递命令,您试图实现什么?乍一看,您的代码似乎对我来说是正确的,您能否显示用于调用和使用Status类的部分的更多信息?我刚刚编辑了它,以显示从命令中丢失的()
。它需要是command=self.start\u progress
,而不是command=self.start\u progress()
这样做,现在它说\u tkinter.TclError:unknown option“-command”
我认为进度条不接受命令回调。你想通过下达命令来达到什么目的?哦,这很有道理。非常感谢@如果这有帮助的话,考虑接受答案,这样这个问题就可以结束了。非常感谢@如果这有帮助的话,考虑接受答案,这样这个问题就可以结束了。