【发布时间】:2017-12-01 16:53:55
【问题描述】:
我想从我的 .py 文件中删除这一行:
self.layout.bind(minimum_height=self.layout.setter('height'))
并用相同的指令替换它,但在 .kv 文件中。有什么方法可以将self.layout.setter('height') 绑定到minimum_height 吗?
【问题讨论】:
标签: kivy
我想从我的 .py 文件中删除这一行:
self.layout.bind(minimum_height=self.layout.setter('height'))
并用相同的指令替换它,但在 .kv 文件中。有什么方法可以将self.layout.setter('height') 绑定到minimum_height 吗?
【问题讨论】:
标签: kivy
怎么样?
height: self.minimum_height
我猜你在 ScrollView 中使用它。如果为真,这应该有效。 例如,请参阅这篇文章 https://stackoverflow.com/a/45313388/6646710,它正是使用了这个。
【讨论】:
要使布局高度适应子小部件的高度,您只需执行以下操作:
height: self.minimum_height
示例:
只有 python 代码:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.scrollview import ScrollView
class RootWidget(BoxLayout):
def __init__(self, **kwargs):
super(RootWidget, self).__init__(**kwargs)
self.orientation = "vertical"
self.sv = ScrollView()
self.btn = Button(text="Addd button", size_hint_y=0.1,
on_press = self.add_button)
self.layout = GridLayout(cols = 1, size_hint_y= None,
row_default_height= 100)
self.layout.bind(minimum_height=self.layout.setter('height'))
self.add_widget(self.sv)
self.add_widget(self.btn)
self.sv.add_widget(self.layout)
def add_button(self, instance):
self.layout.add_widget(Button())
class TestApp(App):
def build(self):
return RootWidget()
if __name__ == '__main__':
TestApp().run()
使用 Kivy Languaje:
main.py:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class RootWidget(BoxLayout):
def __init__(self, **kwargs):
super(RootWidget, self).__init__(**kwargs)
def add_button(self):
self.layout.add_widget(Button())
class TestApp(App):
def build(self):
return RootWidget()
if __name__ == '__main__':
TestApp().run()
test.kv:
<RootWidget>:
orientation: "vertical"
layout: glayout
ScrollView:
GridLayout
id: glayout
cols:1
row_default_height: 100
size_hint_y: None
height: self.minimum_height # <<<<<<<<<<<<<<<<
Button:
text: "Add button"
on_press: root.add_button()
size_hint_y: 0.1
【讨论】:
您可以在 .kv 文件中执行height: self.minimum_height。请记住,有时您还必须设置 size_hint_y: None 才能看到所需的效果。
【讨论】: