python - 状态对象没有属性“正在加载”
问题描述
我正在使用面向对象的设计在 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=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
并将其设置为您的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()
推荐阅读
- android - flutter listview listen to changes in file directory and rebuid the widget
- c# - Grpc传输大数据,一元调用比流式传输慢,
- python - 为什么我会得到?Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
- android - Flutter如何在圆圈中显示标记?flutter_map
- laravel - Laravel Dusk 无法在 Docker/docker-compose.yaml 上运行
- c++ - 如何在没有任何变量的情况下从控制台读取数字
- ruby-on-rails - 使用 devise_invitable,一经接受,保存相互友谊
- data-warehouse - 在星型模式 DWH 中构建无事实事实的最佳方法
- caching - 如何使用 scrapy 或任何其他工具抓取使用 if-non-match 和 cookie 的页面?
- c# - 外部登录facebook mvc应用