Kivy 将变量传递给类中的函数
Posted
技术标签:
【中文标题】Kivy 将变量传递给类中的函数【英文标题】:Kivy pass variables to function in class 【发布时间】:2016-01-15 13:12:03 【问题描述】:我在玩 Kivy 并构建了一些按钮:
for i in range(30):
self.user = str(i)
self.btn = Button(text=self.user, size_hint_y=None, height=40)
self.btn.bind(on_press=self.auth(self.user))
self.layout.add_widget(self.btn)
这些按钮调用身份验证:
def auth(mytext,instance):
print "auth called"
popup = Popup(title="success",
content=Label(text=mytext),
size=(100, 100),
size_hint=(0.3, 0.3),
auto_dismiss=False)
popup.open()
为什么我没有将包含字符串的 self.user 传递给 auth 函数 mytext 变量?
我收到了AssertionError: None is not callable
。
【问题讨论】:
【参考方案1】:包含按下按钮的所有内容的实例。
for i in range(30):
self.user = str(i)
self.btn = Button(text=self.user, size_hint_y=None, height=40)
self.btn.bind(on_press=self.auth)
self.layout.add_widget(self.btn)
和
def auth(self, instance):
print "auth called"
popup = Popup(title="success",
content=Label(content=Label(text='The button <%s> is being pressed' % instance.text),
size=(100, 100),
size_hint=(0.3, 0.3),
auto_dismiss=False)
popup.open()
也可以给按钮一个 id 像
self.btn = Button(text="Test User", size_hint_y=None, height=40, id=self.user)
并通过instance.id
获取ID
content=Label(content=Label(text='The button <%s> is being pressed' % instance.id)
【讨论】:
以上是关于Kivy 将变量传递给类中的函数的主要内容,如果未能解决你的问题,请参考以下文章