1
我有一個類,不斷改變背景顏色,在init Clock.schedule_interval。我想同時創建這個類的多個實例;但是,我認爲這意味着創建不允許的多個線程?我想要的是上半部分改變顏色,而下半部分改變顏色。發生的事情只有下半部分是變化的顏色,而上半部分是黑色的。所以這裏是代碼。如何在kivy應用程序中同時運行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。
這是我提交的第一個問題,所以如果我對提交問題做了任何錯誤,請讓我知道。
非常感謝你。對於我認爲很困難的事情,這種簡單的解決方 – pizz