이것은 내 첫 번째 게시물이지만 가능한 한 자세히 분석하려고 노력할 것입니다. 그래서 내 응용 프로그램은 파이썬에 있고 그리드의 각 요소는 다섯 개의 추가 위젯과 가능성을 포함하는 Kivy의 그리드를 포함합니다. 4 개의 추가 위젯은 모서리가 십자가 모양이고 가운데가 다섯 번째 모양입니다. 내가 메인 창 지금까지여러 개의 위젯을 포함하는 각 그리드 요소가있는 Kivy의 동적 그리드
정말 좋은 위치 0,0이 왼쪽 하단에있는 토지 하위 위젯을 추가 할 때마다
문제이다. 지금 당장 나는 다른 위젯 내부에 하나의 위젯을 올바르게 표시하려고 노력하고 있습니다.
내가 시도 Heres는 무엇을 : 다음 버튼을 그 안에 상자 레이아웃을 넣어 것 인
<[email protected]>
BoxLayout:
orientation:'horizontal'
Button:
text:'One'
size:10,10
size_hint:None,None
, 내 앱의 .kv 파일을 구축.
class GridCell(Label):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.root = FloatLayout()
self.button = Button(text="test")
self.button.x = self.root.x
self.button.center_y = self.root.center_y
self.root.add_widget(self.button)
self.add_widget(self.root)
이 또한 작동하지 않았다 :
또한 나는 다음과 같은 클래스 구성을 시도했다.
for 루프의 각 반복마다 새로 만든 위젯이있는 격자에 .add를 호출하여 표 셀을 추가하려고합니다.
모든 하위 위젯은 분명히 생성되었지만 모두 왼쪽 하단에 위치합니다!
import kivy
import World
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics import Color, Rectangle
kivy.require('1.10.0')
class GridCell(Label):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.root = FloatLayout()
self.button = Button(text="blargh")
self.button.x = self.root.x
self.button.center_y = self.root.center_y
self.root.add_widget(self.button)
self.add_widget(self.root)
def on_size(self, *args):
self.canvas.before.clear()
if self.id is "cliff":
with self.canvas.before:
Color(249/255, 6/255, 6/255, 0.3)
Rectangle(pos=self.pos, size=self.size)
if self.id is "goal":
with self.canvas.before:
Color(6/255, 6/255, 249/255, 0.3)
Rectangle(pos=self.pos, size=self.size)
if self.id is "start":
with self.canvas.before:
Color(11/255, 174/255, 6/255, 0.3)
Rectangle(pos=self.pos, size=self.size)
if self.id is "normal":
with self.canvas.before:
Color(119/255, 115/255, 115/255, 0.3)
Rectangle(pos=self.pos, size=self.size)
class GameGridApp(App):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.grid = GridLayout(cols=8, rows=5)
self.load_into()
def load_into(self):
world = World.World(8, 5)
world.build_gamegrid()
for cell in world.gamegrid:
name = str(cell.name)
grid_cell = GridCell()
grid_cell.text = name
if cell.start:
grid_cell.id = "start"
if cell.goal:
grid_cell.id = "goal"
if cell.cliff:
grid_cell.id = "cliff"
if cell.field:
grid_cell.id = "normal"
self.grid.add_widget(grid_cell)
def build(self):
return self.grid
customLabel = GameGridApp()
customLabel.run()
안녕하십니까. 그리드마다 GridLayout 객체를 갖는 방법을 알고 싶습니다. 내부에 4/5 위젯이 있습니다. 예를 들어 4/5'Label' objects 일 수도 있습니다. 게시물에 질문을 명확히하거나 돋보이게 할 수 있습니다. – Arief