Kivy GridLayout 访问行和列 returns None。
Kivy GridLayout accessing rows and cols returns None.
我有以下代码:
class MyGridLayout(GridLayout):
def __init__(self, **kwargs):
super(MyGridLayout, self).__init__(**kwargs)
class Board(Widget):
my_layout = ObjectProperty(None)
def __init__(self, **kwargs):
super(Board, self).__init__(**kwargs)
def on_my_layout(self, instance, value):
print self.my_layout.cols
class MyApp(App):
def build(self):
return Board()
if __name__ == '__main__':
MyApp().run()
这是我的 kv 文件:
<Board>:
my_layout: my_layout
MyGridLayout:
id: my_layout
cols: 10
rows: 10
关于方法 on_my_layout
我想打印我的 MyGridLayout 实例有多少列。但是,它 return 对我来说总是 None。如果我想访问行,它也是 returns None。我必须更改我的 python 代码或我的 kivy 语言才能访问 MyGridLayout
的行和列的正确值?它必须 return rows = 10
和 cols = 10
。
<Board>:
my_layout: my_layt ## This
MyGridLayout:
id: my_layt
cols: 10
rows: 10
它不起作用,因为您将不存在的小部件分配给 ObjectProperty
,因此 YourObjectProperty.cols==None
。你基本上需要这样做:
<Board>:
MyGridLayout:
id: my_layt
cols: 10
rows: 10
my_layout: my_layt ## This
这将引发 kv 错误。但是,如果您在 __init__()
中执行此操作,那么您的小部件已经存在并且可以正常工作,它将毫无问题地打印出来。 id和variable不要重名,否则可能根本无法工作
class Board(Widget):
my_layout = ObjectProperty(None)
def __init__(self, **kwargs):
super(Board, self).__init__(**kwargs)
self.my_layout = self.ids.my_layt
我有以下代码:
class MyGridLayout(GridLayout):
def __init__(self, **kwargs):
super(MyGridLayout, self).__init__(**kwargs)
class Board(Widget):
my_layout = ObjectProperty(None)
def __init__(self, **kwargs):
super(Board, self).__init__(**kwargs)
def on_my_layout(self, instance, value):
print self.my_layout.cols
class MyApp(App):
def build(self):
return Board()
if __name__ == '__main__':
MyApp().run()
这是我的 kv 文件:
<Board>:
my_layout: my_layout
MyGridLayout:
id: my_layout
cols: 10
rows: 10
关于方法 on_my_layout
我想打印我的 MyGridLayout 实例有多少列。但是,它 return 对我来说总是 None。如果我想访问行,它也是 returns None。我必须更改我的 python 代码或我的 kivy 语言才能访问 MyGridLayout
的行和列的正确值?它必须 return rows = 10
和 cols = 10
。
<Board>:
my_layout: my_layt ## This
MyGridLayout:
id: my_layt
cols: 10
rows: 10
它不起作用,因为您将不存在的小部件分配给 ObjectProperty
,因此 YourObjectProperty.cols==None
。你基本上需要这样做:
<Board>:
MyGridLayout:
id: my_layt
cols: 10
rows: 10
my_layout: my_layt ## This
这将引发 kv 错误。但是,如果您在 __init__()
中执行此操作,那么您的小部件已经存在并且可以正常工作,它将毫无问题地打印出来。 id和variable不要重名,否则可能根本无法工作
class Board(Widget):
my_layout = ObjectProperty(None)
def __init__(self, **kwargs):
super(Board, self).__init__(**kwargs)
self.my_layout = self.ids.my_layt