我有一个按钮网格,需要一种方法来读取特定按钮的属性,并在主事件循环中编辑另一个按钮的属性
我已经找到了许多不同的方法来编辑属性,我可以在启动时或手动写出12个按钮小部件,所有这些小部件都有一个特定的名称,但我显然想让它更通用一些
import kivy
from kivy.app import App
from kivy.config import Config
from kivy.uix.gridlayout import GridLayout
from kivy.uix.togglebutton import ToggleButton
from kivy.uix.widget import Widget
from kivy.clock import Clock
kivy.require("1.11.1")
#Force window size
Config.set('graphics','width','150')
Config.set('graphics','height','200')
class ButtonField(GridLayout):
def __init__(self, **kwargs):
super(ButtonField, self).__init__()
self.cols = 3
self.rows = 4
for count in list(range(self.cols*self.rows)):
self.btn = ToggleButton(id=str(count))
self.add_widget(self.btn)
class Ditto(App):
def build(self):
return ButtonField()
def on_start(self):
Clock.schedule_interval(self.update, 1)
def update(self, *args):
print("test")
if __name__ == "__main__":
Ditto().run()
这是.kv文件
<ToggleButton>
id: btns
group: 'Field'
font_size: 40
background_color: 1,1,1,1
disabled_color: 1, 0.64, 0, 1
background_normal: ''
background_disabled_down: ''
text: '' if btns.state == 'normal' else 'O'
disabled: False if btns.state == 'normal' else True
canvas:
Color:
rgba: .5, .5, .5, 1
Line:
width: 2
rectangle: self.x, self.y, self.width, self.height
我想每3秒钟左右把一个按钮的背景颜色变成红色,如果按钮是红色的,然后点击,你就会松开。因此出现了“读取”和“编辑”按钮
另外,是否有一个on_first或on_action或其他什么东西,这样日程安排只能在按下按钮后启动,而不是启动时启动,这将是非常好的。谢谢:)
如果要将按钮属性从
.kv
文件读取到.py
文件,则需要使用ObjectProperty
in.kv文件
在.py文件中
当你写这个的时候
您需要从
kv
文件中读取btn
。为此,请注意,变量名
btns
应与id (kv file)
中的相同相关问题 更多 >
编程相关推荐