私は次のpythonクラスを持っています:
import os
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.image import Image
from crawler.settings import ASSETS_DIR
class Map(GridLayout):
SIZE = 5
def __init__(self, **kwargs):
super(Map, self).__init__(**kwargs)
for _ in range(0, self.SIZE**2):
self.add_widget(Tile())
class Tile(Widget):
def __init__(self, **kwargs):
super(Tile, self).__init__(**kwargs)
self.add_widget(Image(source=os.path.join(ASSETS_DIR, 'images/chest.gif')))
そして、次の kv 言語定義:
#:kivy 1.0.9
<Map>:
size: self.parent.size
<Tile>:
size: 20, 20
これは 1 つのチェストのみをレンダリングします (実際にはループは正常に実行されるため、積み重ねられているのではないでしょうか?):
一方、ボタンのようなすぐに使えるウィジェットのいくつかの Tile クラスを変更すると:
class Map(GridLayout):
SIZE = 5
def __init__(self, **kwargs):
super(Map, self).__init__(**kwargs)
for _ in range(0, self.SIZE**2):
self.add_widget(Button(text=str(_)))
これを機能させるために Tile クラスに欠けているものは何ですか? そこが問題だと思いますが、今のところ見つけられませんでした