Kivy 简明教程

Kivy - Layouts in Layouts

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

布局本身是 Widget 类的子类。因此,我们可以在布局内策略性地放置一个或多个布局。通过这种方式,可以构建窗口小部件结构的层次结构,以为应用程序设计一个有效的 GUI。任何布局都可以包括在任何其他布局中。一切都取决于开发者设想应用程序设计的方式。

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

kivy layouts in layouts

在这里,我们需要一个最上面的单列网格布局。在其中,我们希望放置一个 TextInput 和两个更水平的框布局。

第一个框包含三个按钮。它下方的那个有一个 Image 控件和一个 AnchorLayout 窗口小部件,其中有一个滑块控件。

Example

以下 “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()

Output

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

kivy layouts in layouts btn

应用程序窗口的最终外观类似于最初的计划,它使用 “布局中的布局”。