我的kivy应用程序中有一个ProgressBar。我相信我需要使用时钟。创建_触发器
,以确保从循环内部更新进度条。
以下代码是用于再现性目的的淡化版本。
ProgressBar类
from kivy.clock import Clock
from kivy.uix.progressbar import ProgressBar
class MyProgressBar(ProgressBar):
def __init__(self, *args, **kwargs):
super(MyProgressBar, self).__init__(*args, **kwargs)
# self.update_bar_trigger = Clock.create_trigger(self.update_bar)
self.update_bar_trigger = Clock.create_trigger(lambda dt: self.update_bar(), 1)
def update_bar(self, step):
if self.value <= 100:
self.value += step
self.update_bar_trigger()
主要类别:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
from kivy.properties import ObjectProperty
from MyProgressBar import MyProgressBar
from kivy.lang import Builder
Builder.load_file('style.kv')
class Main_app(BoxLayout):
# Progress bars
loading_pb = MyProgressBar()
def dummy(self):
pb_increment = 10
for i in range(10):
time.sleep(2)
self.loading_pb.update_bar(pb_increment)
print(self.loading_pb.value)
class Stacked(App):
def build(self):
Window.clearcolor = (1, 1, 1, 1)
Window.size = (1000, 700)
return Main_app()
if __name__ == '__main__':
Stacked().run()
KV文件
<Main_app>:
loading_pb: load_pb
GridLayout:
rows: 2
MyProgressBar:
id: load_pb
value: 0
min: 0
max: 100
Button:
text: 'Start Progress Bar'
on_press:
root.dummy()
此示例显示loading_pb.value按钮单击后代码循环时发生的变化。
进步吧。价值印刷输出
10.0
20.0
30.0
40.0
50.0
60.0
70.0
80.0
90.0
100.0
问题进度条的值似乎确实如预期的那样递增,但实际进度条直到循环结束时才立即改变。
相关的
for i in range(10):
time.sleep(2)
self.loading_pb.update_bar(pb_increment)
print(self.loading_pb.value)
这段代码会阻塞gui,直到它返回,因此正常的gui绘图都不会发生。相反,使用时钟。安排时间间隔和/或时钟。计划_一次
以计划循环的每个迭代。它们将函数调用插入kivy自己的eventloop,并避免阻塞该循环。
我在Android上用RxJava更新ProgressBar的进度有问题我想在延迟500毫秒后更新1%(从0%- 下面是我的代码:
使用一些额外的类和一些巧妙的浏览器特有的 CSS,样式化 HTML5 的<progress> 元素。确保你阅读了浏览器支持。 <progress class="progress" value="0" max="100">0%</progress> <progress class="progress" value="25" max="100">25%</progress> <progress c
进度条 <div class="ui-progress"> <span style="width:50%"></span> </div> 图片上进度条 <ul class="ui-grid-halve"> <li> <div class="ui-grid-halve-img"> <span style="background-ima
本食谱演示了动态进度条的创建、模拟多个请求的管理,并在每个请求完成后更新总体进度。 示例代码 ( StackBlitz ) import './style.css'; import { Observable, of, empty, fromEvent, from } from 'rxjs'; import { delay, switchMapTo, concatAll, coun
进度条(Progress Bars)是一个 HTML5 增量游戏,有一个有趣的进度条和资源管理。很有趣的一款放置游戏~
问题内容: 我想让我的用户了解I / O操作的进度。目前,我有一个内部类,在开始I / O之前要开始学习,在完成后停止。看起来像这样: 是我对UI的引用,是我的外部类中的一个字段,表示我们在I / O中取得的进步。我将停止时的进度设置为100%,因为有时I / O完成并停止我的更新程序,然后它才能完成更新以前的增量。那只是确保它是100%。 目前,这可行,我像这样使用它: 问题在于循环严重地吞噬了