我想将变量传递给自定义窗口小部件的类以构造它。
Python:
class Customwidget(BoxLayout)
mystring = StringProperty()
def __init__(self, **kwargs):
super(Customwidget, self).__init__(**kwargs)
print(mystring)
基维
Root:
BoxLayout:
orientation: 'vertical'
Customwidget:
mystring: 'stringcontents'
执行此命令时,mystring保持为空。如何将其传递给类,以便可以在 init 中使用它来定义小部件内容的逻辑?
答案 0 :(得分:0)
执行此命令时,mystring保持为空。我如何将其传递给 类,这样它就可以在init中用于定义 小部件的内容?
从
load_kv()
中调用run()函数,因此, 在此kv文件中定义并创建其样式的任何窗口小部件 在run()被调用之前(例如在__init__
中),将不会具有其样式 应用。请注意,build()在load_kv被调用之后被调用 叫。
在Kivy完成样式之后,使用Kivy Clock schedule_once()
方法来调用print()
函数。
def __init__(self, **kwargs):
super(Customwidget, self).__init__(**kwargs)
Clock.schedule_once(lambda dt: print(f"mystring={self.mystring}"), 0.02)
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from kivy.clock import Clock
class Customwidget(BoxLayout):
mystring = StringProperty()
def __init__(self, **kwargs):
super(Customwidget, self).__init__(**kwargs)
Clock.schedule_once(lambda dt: print(f"mystring={self.mystring}"), 0.02)
runTouchApp(Builder.load_string("""
Screen:
BoxLayout:
orientation: 'vertical'
Customwidget:
mystring: 'stringcontents'
"""))