gpt4 book ai didi

kivy - kivy 中的进度条无法使用循环更新

转载 作者:行者123 更新时间:2023-12-04 01:52:43 28 4
gpt4 key购买 nike

我正在准备在 kivy 中做一个进度条,我可以用它构建应用程序,但是当我运行一个函数(循环)时它不能被更新,我该怎么做?

这是我的代码:
导入库:

from kivy.app import App

from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

from kivy.uix.label import Label
from kivy.properties import ObjectProperty
from kivy.core.window import Window
from kivy.clock import Clock
from kivy.logger import Logger
from kivy.uix.progressbar import ProgressBar

我的 build 者:
Builder.load_string("""
<RootWidget>:
pb : pb
some code here
ActionView:
ActionPrevious:
with_previous: False
ActionButton:
text: 'Run analysis'
color: 29/255, 185/255, 84/255, 1
on_release: root.clicked()
BoxLayout:
ProgressBar:
id : pb
min :0
max :1
pos_hint: {'x': .1}
size_hint_x :.8
size_hint_y :.5
value: 0
""")

我的 update_bar 函数的其他代码:
class Myapp(BoxLayout):

pb = ProgressBar()
box = ObjectProperty()

def __init__(self, *args, **kwargs):
super(Myapp, self).__init__(*args, **kwargs)

def update_bar(self,dt=None):
self.ids.pb.value = self.ids.pb.value

问题是:每次迭代都不会更新进度条,而是取最后一个值(对于 i = 9999)
     def clicked(self):
for i in range(10000) :
self.ids.pb.value = i/10000
Clock.schedule_interval(self.update_bar,0.5)
self.update_bar()

构建我的应用程序:
class EventScreen(App,Myapp):
def on_stop(self):
Logger.critical("Good bye")
def build(self):
return Myapp()
if __name__ == "__main__":
EventScreen().run()

先感谢您

最佳答案

使用 Clock.create_trigger()更新进度条。
片段

 def __init__(self, *args, **kwargs):
super(Myapp, self).__init__(*args, **kwargs)
self.update_bar_trigger = Clock.create_trigger(self.update_bar)

def clicked(self):
self.i = 0
self.update_bar_trigger()

def update_bar(self, dt):
if self.i <= 10000:
self.ids.pb.value += self.i
self.i += 1
self.update_bar_trigger()

关于kivy - kivy 中的进度条无法使用循环更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52186990/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com