Так что я совершенно новичок в Kivy. Некоторое время я боролся, просто чтобы изображение отображалось по центру. Насколько я понимаю, все является виджетом, и все что угодно может быть вложено под него (по большей части). Пожалуйста, поправьте меня, если это не так.
Теперь у меня есть изображение, и я хочу начать выкладывать свой пользовательский интерфейс. Хотя в нижнем левом углу все выравнивается.
import kivy
kivy.require("1.7.2")
from kivy.config import Config
Config.set('graphics', 'width', '540')
Config.set('graphics', 'height', '960')
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.graphics import Rectangle
class RootWidget(Widget):
pass
class MyApp(App):
def build(self):
# self.root = root = RootWidget(source = "snowy_mountains.jpg")
self.root = root = RootWidget()
root.bind(size = self._update_rect,
pos = self._update_rect)
with root.canvas.before:
self.rect = Rectangle(size = root.size,
pos = root.pos)
return root
def _update_rect(self, instance, value):
self.rect.pos = instance.pos
self.rect.size = instance.size
if __name__ == "__main__":
app = MyApp()
app.run()
А мой .кв...
#:kivy 1.7.2
<RootWidget>:
BoxLayout:
orientation: "vertical"
padding: 10
spacing: 15
GridLayout:
rows: 2
size_hint: 1, .333
Label:
text: "App Name"
Label:
text: "Some Info ..."
GridLayout:
cols: 2
spacing: 15
Button:
text: "1"
Button:
text: "2"
Button:
text: "3"
Button:
text: "4"
Я проверил это через kivycatalog, и он отлично работает. Я скопировал именно то, что сделал оттуда, в свой .kv и просто вложил все это под <RootWidget>
(где находится мое изображение). Я просматривал API и онлайн (не так много вкладов пользователей в kivy...) и не могу понять, почему он ведет себя таким образом. Я даже пытался использовать обычный виджет вместо подкласса изображения. Ба... Есть идеи?