<;Python-Kivy>;GridLayout渲染单个平铺
我有以下python类:<;Python-Kivy>;GridLayout渲染单个平铺,python,kivy,kivy-language,Python,Kivy,Kivy Language,我有以下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):
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')))
以及以下语言定义:
#:kivy 1.0.9
<Map>:
size: self.parent.size
<Tile>:
size: 20, 20
它显示正确的结果:
在我的瓷砖课上,我缺少什么来完成这项工作?我想这就是问题所在,但到目前为止我还没找到
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')))
每个磁贴都是包含图像的小部件,但小部件不是布局类,因此图像的默认位置为(0,0)
,大小为(100100)
您可以将互动程序设置为图像,或者将小部件替换为类似BoxLayout的布局(后一种选择效率较低,除非您需要额外的布局行为)。这实际上是有道理的,让我试试
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')))