- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个类,它在 init 中使用 Clock.schedule_interval 不断更改背景颜色。我想同时创建该类的多个实例;但是,我认为这意味着创建多个线程,这是不允许的?我想要的是上半部分改变颜色,而下半部分改变不同的颜色。发生的情况只是下半部分正在改变颜色,而上半部分是黑色的。这是代码。
/teacher/main.py 文件是
from kivy.app import App
from kivy.clock import Clock
from kivy.graphics import Color
from kivy.properties import NumericProperty, ReferenceListProperty
from kivy.uix.gridlayout import GridLayout
from kivy.uix.widget import Widget
from random import randint
class ChangingBackgroundColor(Widget):
r = NumericProperty(.5)
g = NumericProperty(.5)
b = NumericProperty(.5)
a = NumericProperty(1)
color = ReferenceListProperty(r, g, b, a)
def __init__(self,**kwargs):
super(ChangingBackgroundColor, self).__init__(**kwargs)
Clock.schedule_interval(self.update, .2)
def update(self, dt):
position = randint(0,2) # change to randint(0,3) to change a as well
direction = randint(0,1)
if direction == 0:
if self.color[position] == 0:
self.color[position] += .1
else:
self.color[position] -= .1
elif direction == 1:
if self.color[position] == 1:
self.color[position] -= .1
else:
self.color[position] += .1
self.color[position] = round(self.color[position], 2)
self.canvas.add(Color(self.color))
class TeachingApp(App):
def build(self):
grid = GridLayout(rows=2)
a = ChangingBackgroundColor()
b = ChangingBackgroundColor()
grid.add_widget(a)
grid.add_widget(b)
return grid
if __name__ == '__main__':
TeachingApp().run()
/teacher/teaching.kv 文件是
#:kivy 1.0.9
<ChangingBackgroundColor>:
canvas:
Color:
rgba: self.color
Rectangle:
size: self.width, self.height
我看了这里,对线程问题仍然很模糊。 Clock documentation .
这是我提交的第一个问题,因此如果我在问题提交方面做错了什么,请告诉我。
最佳答案
你的代码很好,使用 Clock.schedule_interval 不使用线程(它都在主线程中),即使你确实有它们,也可以从其他线程使用它们,尽管回调仍然会在主线程中发生。
问题是您在 kv 中的矩形条目需要具有:
pos: self.pos
如果没有这个,两个矩形的默认位置都是 (0, 0),因此第二个矩形位于第一个矩形的上方,并且屏幕的上半部分是黑色的。
关于python - 如何在 kivy 应用程序中同时运行 Clock.schedule_interval 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35747331/
我尝试在 Airflow 中运行动态 schedule_interval,如下所示。但只有当我手动运行 dag 时它才有效。你能帮我说一下,如果动态 schedule_interval 可能是一个原因
设置 Airflow 的 schedule_interval 之间的语义区别是什么?至 "@once"对比 None ? 如果我理解正确,它们都需要手动触发 dag 才能运行。这样对吗? 最佳答案 仅
我想尝试使用 Airflow 而不是 Cron。 但是 schedule_interval 没有按我预期的那样工作。 我写了如下的python代码。 根据我的理解,Airflow 应该在“2016/0
我让 schedule_interval 调用一个函数,该函数从网络上获取天气数据,然后将其解析为字典。我让我的 kv 文件读取该字典并在 float 布局中显示值。我知道正在调用该函数,因为我也将它
我是 Kivy 的新手,我在做乒乓球教程,一切都很顺利,我将它改编为 4 个玩家,每个 Racket 都有自己的颜色,如果球击中 Racket ,它就会得到它的颜色,这样如果球离开屏幕,最后一名击球手
我如何配置 Airflow (mwaa) 以便它每天在同一时间(太平洋标准时间早上 6 点)触发 dag 何时部署? 我已经尝试了对我有意义的方法: 将 schedule_interval 设置为 0
我不断收到警告: WARNING - schedule_interval is used for , though it has been deprecated as a task parameter
我一直在尝试设置一个父 dag,它有两个 subdag,由于它们各自的数据源可用,每个 subdag 的运行时间略有不同。然而,subdags 似乎立即与父 dag 一起启动,无视他们自己的 sche
我有一个类,它在 init 中使用 Clock.schedule_interval 不断更改背景颜色。我想同时创建该类的多个实例;但是,我认为这意味着创建多个线程,这是不允许的?我想要的是上半部分改变
我们可以从 Airflow 变量中动态读取 Airflow schedule_interval 的参数,而不是直接作为 cron 表达式 传递吗? 根据 Airflow 文档,我已通过以下方式 参数
我是 Airflow 的新手,但我已经定义了一个 Dag,每天早上 9 点发送一封基本的电子邮件。我的 DAG 如下: from airflow import DAG from datetime im
我是一名优秀的程序员,十分优秀!