kvlang이 아닌 python으로 추가 된 위젯 내부의 부모에 대한 참조를 어떻게 얻을 수 있습니까? 일반적으로 self.parent
을 호출하지만 위젯이 파이썬에 부모에 추가 된 경우 Null
을 반환합니다.Kivy : 파이썬에 추가 된 위젯 내부에 부모 가져 오기
예 :
import kivy
kivy.require('1.9.0') # replace with your current kivy version !
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.clock import Clock
kvlang = '''
<ScreenManagement>:
ScreenOne:
<ScreenOne>:
name: 'First'
<ScreenTwo>:
name: 'Second'
'''
class ScreenManagement(ScreenManager):
def __init__(self,**kwargs):
super().__init__(**kwargs)
def setup(*args):
self.add_widget(ScreenTwo()) #add ScreenTwo later in python
Clock.schedule_once(setup)
class ScreenOne(Screen):
def __init__(self,**kwargs):
super().__init__()
def setup(*args):
print("Parent of ScreenOne: {}".format(self.parent)) #this is working
Clock.schedule_once(setup)
class ScreenTwo(Screen):
def __init__(self,**kwargs):
super().__init__()
def setup(*args):
print("Parent of ScreenTwo: {}".format(self.parent)) #this is not working, self.parent will return None
Clock.schedule_once(setup)
class MyApp(App):
def build(self):
Builder.load_string(kvlang)
return ScreenManagement()
if __name__ == '__main__':
MyApp().run()
이 반환됩니다
Parent of ScreenOne: <__main__.ScreenManagement object at 0x7f98a3fddb40>
Parent of ScreenTwo: None
이걸로 무엇을하고 싶니? 아마도 조금 더 많은 컨텍스트가 도움이 될 것입니다. – Juggernaut
부모 클래스의 변수에 액세스하고 싶습니다. 물론 자식 인스턴스화에서 인수로 전달할 수도 있지만, 왜 이것이 가능하지 않은지 궁금합니다. 나는하려고 애쓴다. – Sebastian