kvlangによって追加されていないがPythonでウィジェット内の親への参照を取得するにはどうすればよいですか? 通常、self.parent
を呼び出すだけですが、ウィジェットがPythonで親に追加された場合はNull
が返されます。Kivy:Pythonで追加されたウィジェット内で親を取得
例:
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