【发布时间】:2021-01-03 14:58:45
【问题描述】:
我创建了一个自定义切换按钮布局,我想多次重复使用它。我想重用它,因为它包含广泛的格式。我正在使用生成的 uuid 来分配组,以便多个实例不会相互干扰。
这是我的 test.kv:
#:kivy 2.0.0
#:import uuid uuid
<ExampleToggle@BoxLayout>:
uuid: uuid.uuid4()
orientation: 'horizontal'
ToggleButton:
id: run
text: 'RUN'
group: root.uuid
on_release: root.on_run()
ToggleButton:
id: stop
text: 'STOP'
group: root.uuid
on_release: root.on_stop()
<TestDisplay>:
BoxLayout:
orientation: 'vertical'
ExampleToggle:
on_run: print('A')
on_stop: print('B')
ExampleToggle:
on_run: print('C')
on_stop: print('D')
这是我的 test.py:
import kivy
kivy.require('2.0.0')
from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.widget import Widget
class ExampleToggle():
on_run = ObjectProperty(None)
on_stop = ObjectProperty(None)
def on_run(self, *args):
# Dummy function
pass
def on_stop(self, *args):
# Dummy function
pass
class TestDisplay(Widget):
pass
class TestApp(App):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def build(self):
return TestDisplay()
if __name__ == '__main__':
TestApp().run()
我希望能够创建 ExampleToggle 小部件的多个副本并为按钮分配不同的功能。将函数分配给各个按钮的 on_release 事件没有问题,但是如果我这样做,那么对于此小部件的每个实例来说,它都是相同的事件。我希望能够在每次重用小部件时分配不同的功能。
我觉得我要么错过了一些非常简单的事情,要么我走错了路。我尝试了多种不同的方法,并花费了大量时间阅读和研究...任何帮助将不胜感激。
【问题讨论】:
标签: kivy custom-widgets