Kivy - 布局中的布局
Kivy 中的布局是一个容器小部件。它提供了一种有效的机制来构建具有不同小部件的 GUI。Kivy 库包括不同的布局小部件,例如 GridLayout、BoxLayout、AnchorLayout 等。
布局本身是 Widget 类的子类。因此,我们可以策略性地将一个或多个布局放置在布局中。通过这种方式,可以构建小部件结构的层次结构,为应用程序设计有效的 GUI。任何布局都可以包含在任何其他布局中。这一切都取决于开发人员如何设想应用程序设计。
让我们按照以下示意图规划我们的应用程序界面布局 −
在这里,我们需要一个最上面的单列网格布局。在里面,我们想放一个 TextInput 和另外两个水平框布局。
第一个框包含三个按钮。下面的一个框有一个 Image 控件和一个 AnchorLayout 小部件,其中包含一个滑块控件。
示例
以下"kv"语言脚本使用此规划结构 −
GridLayout:
cols: 1
size: root.width, root.height
TextInput:
text: "Hello World!"
font_size: 32
size_hint: (1, .2)
BoxLayout:
orientation:'horizontal'
size_hint: (1, .2)
Button:
text:"Btn 1"
font_size:32
Button:
text:"Btn 2"
font_size:32
Button:
text:"Btn 3"
font_size:32
FloatLayout:
Image:
source: "kivy-logo.png.png"
size_hint: .5, .75
pos_hint: {"center_x": 0.25}
AnchorLayout:
anchor_x : 'center'
anchor_y : 'top'
size_hint: .5, .75
pos_hint: {"center_x": 0.75}
Slider:
min:0
max:100
value:25
您可以在以下 App 类中加载此"kv"脚本 −
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.animation import Animation
from kivy.core.window import Window
Window.size = (720,400)
class MyLayoutApp(App):
def build(self):
pass
if __name__ == '__main__':
MyLayoutApp().run()
输出
当你运行此代码时,它将产生以下输出窗口 −
应用窗口的最终外观与最初的计划类似,使用了"布局中的布局"。

