在kivy打破主循环(冻结屏幕)

时间:2015-05-30 08:43:25

标签: android python-2.7 loops kivy

我得到并发出当我用一个效果很好的按钮绑定一个函数但是当我绑定一个有无限循环的函数时,屏幕冻结而其他按钮不能用作下面的例子....请给我使用另一个按钮打破循环的解决方案..

from kivy.uix.popup import Popup
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.stacklayout import StackLayout

class APPLICATION_START(FloatLayout):
    def __init__(self, **kwargs):
        super(MyApp, self).__init__(**kwargs)
        self.buone = Button(text="Start Loop",pos=(0,180),size=(470,90),size_hint=(None,None))
        self.logi.bind(on_release=self.loooop)
        self.exitbtn = Button(text="exit",pos=(0,90),size=(235,70),size_hint=(None,None))
        self.exitbtn.bind(on_press=exit)

    def loooop(self,instance):
        while True:
            # do any Activity

        #I want to break this loop when someone press on exit button

class MyApp(App):
    def build(self):
        return APPLICATION_START()

if __name__ == '__main__':
    MyApp().run()

1 个答案:

答案 0 :(得分:1)

gui无法更新,直到你的函数返回为止。

要么为您的任务使用一个线程,要么它由多个重复的短任务组成,您可以Clock.schedule_interval(your_function, some_timestep)重复运行它。