Kivy 简明教程

Kivy - Splitter

Kivy 中的 Splitter 小部件在任何其他小部件或其中包含的布局周围放置一个可拖动的边界。您可以拖动边界以调整其中封闭的对象的大小。该边界可以放置在封闭小部件的顶部或底部,或者其左侧或右侧。

Splitter 类在 “kivy.uix.splitter” 模块中定义。

from kivy.uix.splitter import Splitter
split = Splitter(**kwargs)

配置边界放置所需的一个重要属性是 'sizable_from'。它定义了小部件可从哪个方向调整大小。选项包括:左、右、上或下;默认为“左”。

边界中间有一个 grip 。您可以使用此抓手甚至通过双击它来拖动边界。

Splitter 类的其他属性如下 -

  1. border - 用于 BorderImage 图形指令的边框。这必须是四个值列表:(下、右、上、左),默认值为 [4,4,4,4]

  2. keep_within_parent - 如果为 True,它会将分割器限制在父小部件中。

  3. max_size - 指定小部件不可调整大小的最大尺寸。max_size 默认为 500pt。

  4. min_size - 指定小部件不可调整大小的最小尺寸。默认为 100 pt。

  5. rescale_with_parent - 如果为 True,当在 min_size 和 max_size 内调整大小时,将自动调整大小以保持父小部件的相同比例。

  6. sizable_from - 指定小部件是否可调整大小。选项包括:左、右、上或下;默认为左。

kivy splitter

Example

让我们创建一个简单的水平框布局,并将一个 Image 小部件放置在两个按钮之间。然而,Image 对象被放置在从左侧可调整大小的 Splitter 中。

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.splitter import Splitter
from kivy.core.window import Window

Window.size = (720,350)

class splitterApp(App):
   def build(self):
      layout=BoxLayout(orientation='horizontal')
      b1=Button(
         text='Button1',
         font_size=24, color=(1,0,0,1)
      )
      layout.add_widget(b1)
      spl=Splitter(sizable_from = 'left')
      img=Image(source='Logo.jpg')
      spl.add_widget(img)
      layout.add_widget(spl)
      b2=Button(
         text='Button 2', font_size=24,
         background_color =(.8, .4, .3, 1)
      )
      layout.add_widget(b2)
      return layout

splitterApp().run()

Output

随着程序的运行,您将在图像左侧看到带有抓手的可拖动边界。拖动它以调整图像大小。

kivy splitter resize image

以下是展示从底部可调整大小的垂直分割器用法的程序的 “kv” 脚本版本。

BoxLayout:
   orientation:'vertical'
   Button:
      text: 'Button 1'
      font_size:24
      color:(1,0,0,1)
   Splitter:
      sizable_from : 'bottom'
      Image:
         source:'Logo.jpg'
   Button:
      text:'Button 2'
      font_size:24
      background_color: (.8, .4, .3, 1)

垂直可调整大小的图像小部件如下所示 -

kivy splitter vertical