散布オブジェクトに関連する問題が発生しました。以下の私のコードから。Scatter
( self.size_hint_x
、 )のサイズを変更した後、その中self.size_hint_y = 0.3, 0.3
のオブジェクト ( canvas
、label
)Scatter
もサイズ変更されません。との内部に適用しようとしましsize_hint=1
たが、結果は同じです。Canvas
Label
Scatter
私が遭遇した別の問題は、 の/のX, Y
(親に対する) 位置の取得です。それはいつも私にくれます。Canvas
Label
Scatter
(0,0)
マイコード
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.scatter import Scatter
from kivy.graphics import Color, Rectangle, Canvas
class Avatar(Scatter):
def __init__(self, **kwargs):
super(Avatar, self).__init__(size_hint=(None,None), **kwargs)
with self.canvas:
Color(0, 0, 0)
Rectangle(pos=(self.x, self.y), size=(self.width, self.height))
self.lbl = Label(text='Test', size_hint_x=1, size_hint_y=1)
self.add_widget(self.lbl)
# Scatter size is 30% of the GameBackground
# ISSUE: After resize my Scatter, the objects inside is not resized as well.
self.size_hint_x, self.size_hint_y = 0.3, 0.3
class GameBackground(FloatLayout):
def __init__(self, **kwargs):
super(GameBackground, self).__init__(**kwargs)
with self.canvas:
Color(1, 0, 1)
Rectangle(pos = (0, 0), size = (Window.width,Window.height))
self.elf = Avatar()
self.add_widget(self.elf)
self.elf.x = 200
self.elf.y = 300
# Get the X, Y position of the Scatter and the label inside the Scatter relative to the parent.
print self.elf.pos #<-- This works.
print self.elf.lbl.pos #<-- ISSUE: This not working.
class GameApp(App):
def build(self):
return GameBackground()
if __name__ == '__main__':
GameApp().run()
私は何か見落としてますか?アドバイスをありがとう。
私はKivyが初めてです。私のqnsがばかげている場合は、ご容赦ください。:P