Kivy - 布局嵌套



在 Kivy 中,布局是一个容器组件。它提供了一种有效的机制来构建具有不同组件的 GUI。Kivy 库包含不同的布局组件,例如 GridLayout、BoxLayout、AnchorLayout 等。

布局本身是 Widget 类的子类。因此,我们可以在布局中策略性地放置一个或多个布局。通过这种方式,可以构建组件结构的层次结构来为应用程序设计有效的 GUI。任何布局都可以包含在任何其他布局中。这完全取决于开发人员如何设想应用程序设计。

让我们根据以下示意图规划我们的应用程序界面布局:

Kivy Layouts In Layouts

这里,我们需要一个最顶层的单列网格布局。在其中,我们希望放置一个 TextInput 和另外两个水平箱式布局。

第一个箱体包含三个按钮。它下面的一个包含一个图像控件和一个 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()

输出

运行此代码时,它将生成以下输出窗口:

Kivy Layouts In Layouts Btn

应用程序窗口的最终外观类似于初始计划,该计划使用了“布局嵌套”。

广告