2017-12-29 6 views
0

키브 레이블을 StringProperty()에 바인딩했습니다. 파이썬에서 문자열을 가져 오려고합니다.Python에서 StringProperty의 문자열을 가져 오는 방법

class Screen1(Screen): 
    food_label = StringProperty() 

    def print_label(self): 
     print(Screen1.food_label) 

그것은이 반환 <StringProperty name=food_label>

가 나는 def이 문을 사용하여 이전 화면에서 속성을 설정 :

self.manager.get_screen('screen_1').food_label = food 

'음식'는 String입니다. 화면에 레이블 텍스트가 올바르게 표시됩니다.

StringProperty()에 포함 된 실제 문자열을 인쇄하는 방법은 무엇입니까?

+0

@kindall을 할 필요가 정확히 주어진 하나 개의 인수 (0 소요)'. 추가해야 할 인수가 확실하지 않습니다 ...이 부분은 문서에 명시되지 않았습니다. – twegner

+1

오, 죄송합니다. 그 호출은'self.manager.get_screen ('screen_1')과 같은 인스턴스에 있어야합니다. food_label.get()' – kindall

+0

@kindall 예, 그랬습니다. TY. – twegner

답변

2

Screen1.food_label은 작동하지 않습니다. Kivy 속성은 클래스 맨 위에 선언되어 있으므로 Python 정적 변수처럼 보이지만 실제로는 객체 속성입니다. 당신이

class Screen1(Screen): 
    food_label = 'Hello world' 

    def print_label(self): 
     print(Screen1.food_label) 

을했을 경우이
을 작동해야하지만 이러한 Kivy 속성 때문에, 당신은 내가() 오류`수를 얻을 수

class Screen1(Screen): 
    food_label = StringProperty() 

    def print_label(self): 
     print(self.food_label) 
+1

정답입니다. – twegner

관련 문제