用python添加的kivy中的引用对象
Posted
技术标签:
【中文标题】用python添加的kivy中的引用对象【英文标题】:Reference objects in kivy added with python 【发布时间】:2020-08-26 11:13:47 【问题描述】:我需要知道如何引用动态创建的对象。就像在示例中一样,如何在创建后更改按钮的文本?通常我会使用他们的 id 来做,但据我所知,你不能给在 python 中创建的对象提供 id。
.py 代码
from kivy.app import App
from kivy.uix.screenmanager import Screen
from kivy.uix.button import Button
from kivy.clock import mainthread
NUMBER_OF_BUTTONS = 5
class MapScreen(Screen):
@mainthread
def on_enter(self):
for i in range(NUMBER_OF_BUTTONS):
button = Button(text="B_" + str(i))
self.ids.grid.add_widget(button)
class Test(App):
pass
Test().run()
.kv 代码
ScreenManager:
MapScreen:
<MapScreen>:
name: 'map'
GridLayout:
id: grid
cols: 1
【问题讨论】:
【参考方案1】:您可以只保留Buttons
的列表:
def on_enter(self):
self.buttons = []
for i in range(NUMBER_OF_BUTTONS):
button = Button(text="B_" + str(i))
self.buttons.append(button)
self.ids.grid.add_widget(button)
或者您可以创建自己的字典:
def on_enter(self):
self.buttons =
for i in range(NUMBER_OF_BUTTONS):
text = "B_" + str(i)
button = Button(text=text)
self.buttons[text] = button
self.ids.grid.add_widget(button)
【讨论】:
以上是关于用python添加的kivy中的引用对象的主要内容,如果未能解决你的问题,请参考以下文章