如何在.kv文件中传递变量

Posted

技术标签:

【中文标题】如何在.kv文件中传递变量【英文标题】:How to pass variable inside .kv file 【发布时间】:2021-03-16 15:53:58 【问题描述】:

我想将 textinput.text 作为参数传递给 root.myfunc(textinput.text) 这样 .py 文件中的函数名 myfunc() 就会得到这个参数,并根据这个参数打印随机列表

这是我的 .py 文件:

import kivy
import random
kivy.require('1.11.1')
from kivy.uix.textinput import TextInput
from kivy.uix.widget import Widget
from kivy.app import App

class myclass(Widget):
    a=10
    def my_func(self):
        randomlist=[]
        for i in range(5):
            num=random.randint(1,20)
            randomlist.append(num)

        print(randomlist)




class Myapp(App):
    def build(self):
        return myclass()

Myapp().run()

这是我的 .kv 文件:

 Button:
        id:b1
        text:"Display"
        size:(120,50)
        size_hint:(.5,.5)
        pos:(130,290)
        on_release: root.my_func()
    TextInput:
        id:t1
        size:(170,50)
        pos:(130,365)

【问题讨论】:

【参考方案1】:

您必须通过其 ID 获取文本输入,然后您可以将其文本属性作为参数传递给您的函数。

kv:

<myclass>
    Button:
        id:b1
        text:"Display"
        size:(120,50)
        size_hint:(.5,.5)
        pos:(130,290)
        on_release: root.my_func(t1.text)

    TextInput:
        id:t1
        size:(170,50)
        pos:(130,365)

还有python函数:

    def my_func(self, text):
        randomlist=[]
        for i in range(5):
            num=random.randint(1,20)
            randomlist.append(num)

        print(text)
        print(randomlist)

【讨论】:

以上是关于如何在.kv文件中传递变量的主要内容,如果未能解决你的问题,请参考以下文章

在 Kivy 中,我如何从另一个以 kv 语言显示的另一个屏幕获取变量

当屏幕在主 .kv 文件中管理时,如何从 .py 文件切换屏幕?

将函数变量传递给标签

如何在 OSX 上的 Pycharm 中获得 Kivy、.kv、文件的语法高亮显示? [复制]

如何打印在.kv(kivy)中输入的TextInput值,以打印在.py文件中?

如何将函数绑定到kv文件中的按钮