Kivy - 开关



Kivy框架中的Switch组件类似于我们在家里用来开关灯或风扇的电开关。应用程序窗口上的开关可以通过将其active属性切换为True或False来翻转。

Switch类在“kivy.uix.switch”模块中定义。

from kivy.uix.switch import Switch
switch = Switch(**kwargs)

放置在应用程序窗口上时,Switch对象显示如下:

Kivy Switch

Switch类定义了一个名为active的布尔属性,该属性指示开关是打开/关闭。通常,此属性附加到回调函数,以便在其值从True更改为False或反之亦然时调用所需的操作。

def callback(instance, value):
   if value:
      print('the switch is ON')
   else:
      print ('The switch is OFF')
switch = Switch()
switch.bind(active=callback)

示例

我们将在以下代码中使用Switch组件来启动或停止音频播放。应用程序设计包含一个标签和一个放置在水平箱式布局中的开关。

Switch的active属性绑定到switched()方法。打开时,加载Sound对象并调用其play()方法。另一方面,当翻转到OFF时,将调用stop()方法。

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.core.audio import SoundLoader
from kivy.uix.switch import Switch
from kivy.core.window import Window

Window.size = (720, 250)

class switchdemoapp(App):
   def switched(self, instance, value):
      if value == True:
         self.sound = SoundLoader.load('sample.mp3')
         self.l1.text = 'Playing. . .'
         self.sound.play()
      else:
         self.sound.stop()
         self.l1.text = 'Switch ON to Play'
   def build(self):
      box = BoxLayout(orientation='horizontal')
      self.l1 = Label(
         text = 'Switch ON to Play',
         font_size = 32, color = [.8, .6, .4, 1]
      )
      box.add_widget(self.l1)
      switch = Switch()
      switch.bind(active = self.switched)
      box.add_widget(switch)
      return box

switchdemoapp().run()

输出

程序启动时,标签提示用户将开关滑动到ON。标签标题更改为“正在播放”消息。将开关滑动到OFF以停止播放音乐。

Kivy Switch On Off
广告