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 将变量传递给类中的函数的主要内容,如果未能解决你的问题,请参考以下文章

将 ResultSet 分配给类中的变量

将变量传递给另一个 JAVA 类中的主函数

如何将另一个文件中的变量分配给类常量?

将文本从文本输入传递到 Kivy 中的标签

更新另一个类中的 kivy 标签文本

Python - 如何传递给类对象的函数参数类型(打字)