2015-09-16 4 views
3

Я хочу сделать приложение, которое будет печатать текст, введенный в TextInput, когда я нажимаю Print. После нескольких часов поиска в Интернете я до сих пор не могу понять, как оценить значение TextInput переменной в скрипте python.Использование значения из textinput в python (kivy)

Это Kivy код:

<SimpleRoot>: 
    orientation:"vertical" 
    padding: root.width * .02, root.height * .02 
    spacing: "10dp" 
    TextInput: 
     id: txt 
    Button: 
     text: 'Print' 
     on_press: root.printTxt(txt.text) 

Python скрипт:

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.textinput import TextInput 
from kivy.uix.boxlayout import BoxLayout 

class SimpleRoot(BoxLayout): # 2 
    def printTxt(text): 
     print txt.text 


    pass 

class SimpleApp(App): # 1 
    def build(self): 
     # Return root widget 
     return SimpleRoot() 

if __name__ == "__main__": 
    SimpleApp().run() 
+0

Что происходит, когда вы запускаете сейчас? Вы получаете какую-то ошибку? – Malonge

+0

Да. Когда я пишу что-то в TextInput и нажимаю «print», я получаю: Файл «D:/Documents/Python \ simple.kv», строка 9, в on_press: root.printTxt (txt.text) TypeError: printTxt() принимает 1 аргумент (2) – Agi38

ответ

2

Попробуйте изменить это:

class SimpleRoot(BoxLayout): # 2 
    def printTxt(text): 
     print txt.text 

Для этого

class SimpleRoot(BoxLayout): # 2 
    def printTxt(self, text): 
     print text 
+0

Я сделал, но теперь он возвращает эту ошибку: Файл «D:/Documents/Python \ simple.kv», строка 9, в on_press: root.printTxt (txt.text) Файл «D: /Documents/Python/textinput.py», строка 8, в printTxt print txt.text NameError: глобальное имя «txt» не определено – Agi38

+0

Посмотрите на мое новое редактирование и посмотрите, работает ли это. Я избавился от txt.text и был заменен только текстом – Malonge

+0

Это сработало! Благодаря! Большое спасибо! – Agi38

Смежные вопросы