Kivy中的进度栏​​无法使用循环更新

时间:2018-09-05 13:59:23

标签: kivy

即时通讯托盘可以在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

我的建造者:

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()

提前谢谢

1 个答案:

答案 0 :(得分:0)

使用Clock.create_trigger()更新进度栏。

摘要

df['result'] = df.groupby([
                 pd.Grouper('dt', freq='D'),
                 pd.Grouper('other_column')
               ]).transform(foo)