有一点问题。所以我正在尝试创建自己的小部件,并且我成功了,只是将其大小和位置设置为正确(与其父级相同)。
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
root(Gridlayout) 的整个第一列被正确地重新绘制为白色,但 Widget 位于默认位置 (0,0) 和默认大小 (100,100) 上。据我所知,这是因为 Widget 无法处理这些事情。布局应该以某种方式自动完成。可以看出,StoryWidget 的根小部件是 layout。我不知道为什么它不起作用。我试图从 Layout 而不是 Widget 继承,但仍然没有。有什么建议吗?谢谢!