首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每秒闪动一个按钮

每秒闪动一个按钮
EN

Stack Overflow用户
提问于 2018-12-09 22:48:30
回答 1查看 99关注 0票数 0

我开始学基维了。下面的代码生成一个10x10按钮网格:

代码语言:javascript
运行
复制
from kivy.uix.gridlayout import GridLayout
from kivy.app import App
from kivy.uix.button import Button


class MyApp(App):
    def build(self):
        layout = GridLayout(cols=10)
        for i in range (1, 101):
            layout.add_widget(Button(text=str(i)))
        return layout

MyApp().run()

我想知道如何使每个按钮每秒钟打开和关闭,即按钮1打开0.5秒,关闭0.5秒,然后按钮2做同样的操作,并重复到按钮100?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-09 23:18:46

您可以使用kivy.clock来安排事件:

代码语言:javascript
运行
复制
from functools import partial
from kivy.clock import Clock
from kivy.uix.gridlayout import GridLayout
from kivy.app import App
from kivy.uix.button import Button


class MyApp(App):
    def build(self):
        self.butts = []
        self.count = 0
        layout = GridLayout(cols=10)
        for i in range (1, 101):
            butt = Button(text=str(i))
            self.butts.append(butt)
            layout.add_widget(butt)

        # schedule call to self.flash every second
        Clock.schedule_interval(self.flash, 1.0)
        return layout

    def flash(self, dt):
        butt = self.butts[self.count]
        butt.state = 'down'

        # schedule call to set the button back to 'normal' in half a second
        Clock.schedule_once(partial(self.setNormal, butt), 0.5)
        self.count += 1
        if self.count == len(self.butts):
            # end the interval scheduling
            return False
        else:
            return True

    def setNormal(self, butt, dt):
        butt.state = 'normal'


MyApp().run()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53697456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档