0
有一點問題。所以Iam試圖創建我自己的小部件,並且我已經成功了,除了設置它的大小和位置(與它的parrent相同)之外。Kivy - 創建新的小部件並設置其位置和大小
class Story(App):
def build(self):
return MyWidgets().init()
的應用程序有網格佈局的持有人,到了我所要傳遞的StoryWidget
class MyWidgets(object):
def init(self):
root = GridLayout(cols=2,rows=1)
root.add_widget(StoryWidget())
root.add_widget(Button())
return root
故事的Widget,就如同:
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)的整個第一列以白色正確重新繪製, 但Widget位於defaut pos(0,0)和默認大小(100,100)。 從我所知道的,因爲Widget不能處理這些事情。佈局應該以某種方式自動執行。可以看出,StoryWidget的根部件是佈局。我不知道爲什麼它不起作用。我試圖從佈局而不是Widget繼承,但仍然沒有。有什麼建議?謝謝!
可以使StoryWidget的BoxLayout的子類 – fins