【问题标题】:How to use time sleep in Kivy如何在 Kivy 中使用时间睡眠
【发布时间】:2015-05-02 01:33:58
【问题描述】:

我的应用只有 1 个按钮。我想在 on_press 事件上更改它的颜色,然后等待 5 秒,然后显示一个弹出窗口。

我的尝试:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

from random import random
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from random import random
from random import choice
from kivy.properties import StringProperty
import time

my_popup = Popup(title='Test popup',
    content=Label(text='Hello world'),
    size_hint=(None, None))


Builder.load_string("""
<Highest>:
    GridLayout:
        cols: 1
        Button:
            id: btn_0
            text: "Hi"
            on_press: root.new()
""")

class Highest(Screen):
    def new(self):
        self.ids['btn_0'].background_color = 1.0, 0.0, 0.0, 1.0
        time.sleep(5)
        my_popup.open()


# Create the screen manager
sm = ScreenManager()
sm.add_widget(Highest(name='Highest'))

class TestApp(App):

    def build(self):
        return sm

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

但我的代码会在 5 秒后显示弹出窗口并改变颜色。请帮忙。

【问题讨论】:

标签: kivy


【解决方案1】:

在 Kivy 中,事件是使用 Clock 对象安排的。在您的情况下,您可以随时使用Clock.schedule_once 调用回调。只需将您的 Highest 类重写为:

class Highest(Screen):
def new(self):
    self.ids['btn_0'].background_color = 1.0, 0.0, 0.0, 1.0
    Clock.schedule_once(my_popup.open, 5)

在这里,您将在 5 秒内安排 my_popup.open()

【讨论】:

  • 已经被恶意回答了,无论如何我会勾选你的答案。谢谢
猜你喜欢
  • 2022-01-12
  • 2018-03-30
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多