引用从循环中为迭代变量创建的按钮的名称,并在python kivy中使用它
我在这里面临一个非常基本的问题。我想创建100个按钮,为了使它们更好地用于循环,并在循环本身中创建按钮名称,以便稍后在程序逻辑中使用它,例如,对于I=1,我想创建Button1,对于I=100,我想创建Button100,但我不确定如何在Python Kivy中做到这一点 这与我们在Linux中使用&variable name和有时使用eval所做的相同。请参阅下面的代码以了解更多信息。评论将在此处描述该问题:引用从循环中为迭代变量创建的按钮的名称,并在python kivy中使用它,python,kivy,Python,Kivy,我在这里面临一个非常基本的问题。我想创建100个按钮,为了使它们更好地用于循环,并在循环本身中创建按钮名称,以便稍后在程序逻辑中使用它,例如,对于I=1,我想创建Button1,对于I=100,我想创建Button100,但我不确定如何在Python Kivy中做到这一点 这与我们在Linux中使用&variable name和有时使用eval所做的相同。请参阅下面的代码以了解更多信息。评论将在此处描述该问题: from kivy.app import App from kivy.uix.gri
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.graphics import Color
from kivy.clock import Clock
class RootWidget(GridLayout):
pass
class MainApp(App):
def build(self):
self.parent = GridLayout(cols=6)
for i in (1,2,3,4,5,6):
for j in (1,2,3,4,5,6):
#Want to make self.BName s value as ButtonName%s%s
self.BName= 'ButtonName%s%s'%(i,j)
print "Button Name should be ",self.BName
self.BName = Button(text='%s%s'%(i,j))
self.parent.add_widget(self.BName)
Clock.schedule_once(lambda a:self.update(),1)
return self.parent
def update(self):
print "I am update function"
for child in self.parent.children:
print child
#Want to make use ButtonName11 and not BName
self.BName.text = "hello"
#self.ButtonName11.text= "hello"
if __name__ == '__main__':
MainApp().run()
你试过使用这个概念吗
class Foo:
def __init__(self):
for i in range(100):
self.__dict__['Button{}'.format(i)] = Button(text='Button no. {}'.format(i))
>>> foo = Foo()
>>> foo.Button5.text
Button no. 5
>>> foo.Button98.text
Button no. 98
蝎子神的方法应该是可行的,然而,一个更清晰的方法是使用 下面是一些示例代码:
class Foo(object):
def create_buttons(self):
for i in range(10):
setattr(self, 'my_name{}'.format(i), i)
foo = Foo()
foo.my_name3
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'Foo' object has no attribute 'my_name3'
foo.create_buttons()
foo.my_name3
3
类Foo(对象):
def创建按钮(自):
对于范围(10)内的i:
setattr(self,'my_name{}'。格式(i),i)
foo=foo()
foo.my_name 3
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:'Foo'对象没有属性'my_name3'
foo.create_按钮()
foo.my_name 3
3.
这一种似乎有效。。如果您希望尝试在我在问题中粘贴的代码中创建相同的代码,这是概念,而不是实际需要的代码。你本质上是在问如何动态地向一个对象添加属性,对吗?我无法从你的概念中实现我想要的provided@paarthbatra我对如何添加按钮的理解是,将button()
的实例分配给变量,然后在调用add\u小部件()时使用此变量
功能。你的问题是如何创建一个名为for循环生成的变量吗?@paarthbatra这正是我的概念。您可能需要再次阅读我的答案,因为我将第4行更改为分配按钮实例而不是字符串