2014-10-11 3 views
4

입력 상자, 확인 버튼 및 확인 버튼을 클릭 할 때 텍스트를 변경해야하는 라벨이있는 테스트 앱을 작성하려는 Python/Kivy 입문. 하지만 대신 'NameError : global name'txt1 '이 정의되지 않았습니다.'라는 메시지가 나타납니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?Kivy 앱에서 텍스트 입력 값 가져 오기

# import Kivy 
import kivy 
import random 

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

# my app 
class MyApp(App): 
# layout 
    def build(self): 
     layout = BoxLayout(padding=10, orientation='vertical') 
     btn1 = Button(text="OK") 
     btn1.bind(on_press=self.buttonClicked) 
     layout.add_widget(btn1) 
     lbl1 = Label(text="test") 
     layout.add_widget(lbl1) 
     txt1 = TextInput(text='', multiline=False) 
     layout.add_widget(txt1) 
     return layout 

# button click function 
    def buttonClicked(self,btn): 
     lbl1.text = "You wrote " + txt1.text 

# run app 
if __name__ == "__main__": 
    MyApp().run() 

답변

7

사용 self.txt1, self.lbl1

class MyApp(App): 
# layout 
    def build(self): 
     layout = BoxLayout(padding=10, orientation='vertical') 
     btn1 = Button(text="OK") 
     btn1.bind(on_press=self.buttonClicked) 
     layout.add_widget(btn1) 
     self.lbl1 = Label(text="test") 
     layout.add_widget(self.lbl1) 
     self.txt1 = TextInput(text='', multiline=False) 
     layout.add_widget(self.txt1) 
     return layout 

# button click function 
    def buttonClicked(self,btn): 
     self.lbl1.text = "You wrote " + self.txt1.text 

# run app 
if __name__ == "__main__": 
    MyApp().run() 
# join all items in a list into 1 big string 

사용 :

def buttonClicked(self,btn): 
     lbl1.text = "You wrote " + txt1.text <- only exists in the build method 
+0

이 방법 작업 사용합니다 KV 언어? – supreme

+0

KV에서는 다음을 사용할 수 있습니다. TextInput : \ n text : ""\ n multiline : False –

관련 문제