我有一个我自己无法解决的问题:
我在Python文件中拥有的内容:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class Dossier(BoxLayout):
def __init__(self, nom_, **kwargs):
super(Dossier, self).__init__(**kwargs)
self.orientation = 'vertical'
self.spacing = 2
self.size_hint_y = None
self.height = self.minimum_height
self.nom = nom_
self.ids.TB.text = nom_
def clic(self):
temp = Dossier(str(self.nom) + "\\sous-dossier")
self.ids.SD.add_widget(temp)
class testApp(BoxLayout):
def __init__(self, nom_, **kwargs):
super(testApp, self).__init__(**kwargs)
self.orientation = 'vertical'
self.spacing = 2
self.size_hint_y = None
self.height = self.minimum_height
self.nom = nom_
self.add_widget(Dossier(nom_))
class TestApp(App):
def build(self):
return testApp('test')
if __name__ == "__main__":
TestApp().run()
我在kv文件中有什么
<Dossier>:
ToggleButton:
id: TB
size_hint_y : None
height: 25
halign : 'left'
valign : 'center'
on_press: root.clic()
BoxLayout:
id: SD
orientation : 'vertical'
spacing : 2
size_hint_y : None
height: self.minimum_height
当我选择ToggleButton“ TB”时,这就是我得到的:
之前:
之后:
我添加的对象“ Dossier”仅包含一个ToggleButton,其高度为25,一个空的BoxLayout(在创建时)。间距为2时,“ Dossier”(由BoxLayout继承)实例的高度为27。
但是,当我将其添加到“根”“文档”的空BoxLayout中时,BoxLayout不会更改其大小,并且子对象会在父对象上绘制。
很抱歉,如果我不清楚,我不是说英语的人。
答案 0 :(得分:0)
添加小部件时,请指定小部件的大小,例如size_hint_y=None, height=40
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.clock import Clock
Builder.load_string("""
<Dossier>:
ToggleButton:
id: TB
text: 'Dossier'
size_hint_y : None
size : (1,25)
halign : 'left'
valign : 'center'
BoxLayout:
id: SD
orientation : 'vertical'
spacing : 2
size_hint_y : None
height: self.minimum_height
""")
class Dossier(BoxLayout):
def __init__(self, nom_, **kwargs):
super(Dossier, self).__init__(**kwargs)
self.orientation = 'vertical'
self.spacing = 2
self.size_hint_y = None
self.size = (485, 0)
self.nom = nom_
self.ids.TB.text = nom_
Clock.schedule_once(lambda dt: self.simulation_add_widgets(), 5)
def simulation_add_widgets(self):
for i in range(10):
self.ids.SD.add_widget(Button(text="btn "+str(i), size_hint_y=None, height=40))
class TestApp(App):
def build(self):
return Dossier('1')
if __name__ == "__main__":
TestApp().run()