Как передать переменную внутри файла .kv

#python #variables #widget #kivy #kivy-language

#python #переменные #виджет #kivy #kivy-язык

Вопрос:

я хочу передать textinput.text в качестве аргумента в root.myfunc(textinput.text), чтобы имя функции myfunc() в файле .py получало этот аргумент и печатало случайный список в соответствии с этим аргументом

Вот мой файл .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:

Вы должны получить ввод текста по его идентификатору, а затем вы можете передать его текстовый атрибут в качестве аргумента вашей функции.

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)