少し問題が発生しました。だから私は自分のウィジェットを作成しようとしていますが、そのサイズと位置を正しく設定することを除いて(親と同じになるように)成功しました。
class Story(App):
def build(self):
return MyWidgets().init()
アプリにはホルダーとして GridLayout があり、そこに StoryWidget を渡したい
class MyWidgets(object):
def init(self):
root = GridLayout(cols=2,rows=1)
root.add_widget(StoryWidget())
root.add_widget(Button())
return root
ストーリー ウィジェットは次のようになります。
class StoryWidget(Widget):
def __init__(self,**kwargs):
super(StoryWidget, self).__init__(**kwargs)
topLayout=BoxLayout(orientation = "vertical")
topLayout.add_widget(Button(text="first"))
topLayout.add_widget(Button(text="second"))
self.add_widget(topLayout)
背景色を取得しようとすると、正常に機能します。
with self.canvas.before:
Color(.9,.9,1)
self.Backgroud = Rectangle(pos=self.pos,size=self.size)
self.bind(pos=self.repaint,size=self.repaint)
self.bind(pos=self.resize,size=self.resize)
def repaint(self,*args):
self.Backgroud.pos = self.pos
self.Backgroud.size = self.size
ルート (Gridlayout) の最初の列全体が正しく白に再描画されますが、ウィジェットはデフォルトの位置 (0,0) とデフォルトのサイズ (100,100) に基づいています。私が知っていることから、ウィジェットがこれらのことを処理できないためです。レイアウトは何らかの形で自動的に行う必要があります。ご覧のとおり、StoryWidget のルート ウィジェットはレイアウトです。なぜ機能しないのかわかりません。ウィジェットの代わりにレイアウトから継承しようとしましたが、まだ何もありません。何かアドバイス?ありがとう!