2

散布オブジェクトに関連する問題が発生しました。以下の私のコードから。Scatter( self.size_hint_x、 )のサイズを変更した後、その中self.size_hint_y = 0.3, 0.3のオブジェクト ( canvaslabel)Scatterもサイズ変更されません。との内部に適用しようとしましsize_hint=1たが、結果は同じです。CanvasLabelScatter

私が遭遇した別の問題は、 の/のX, Y(親に対する) 位置の取得です。それはいつも私にくれます。CanvasLabelScatter(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

4

1 に答える 1