首页 > 编程学习 > kivy UX 组件

Button:  on_press 按下按钮时候触发该事件

              on_release 按下按钮并释放触发该事件

以下是一个简单的使用Button的Kivy应用程序示例,可以在按下和释放按钮时打印消息:

import kivy
from kivy.app import App
from kivy.uix.button import Buttonclass MyButton(Button):def on_press(self):print("按钮被按下")def on_release(self):print("按钮被释放")class MyApp(App):def build(self):return MyButton(text='按我')if __name__ == '__main__':MyApp().run()

在这个例子中,MyButton是一个自定义的Button类,它重写了on_press()和on_release()方法。当按钮被按下时,on_press()方法将打印消息“按钮被按下”,当按钮被释放时,on_release()方法将打印消息“按钮被释放”。MyApp是一个简单的Kivy应用程序,它创建了一个MyButton实例并将其返回,这将在屏幕上显示一个按钮,该按钮的文本为“按我”。当用户按下按钮和释放按钮时,将打印相应的消息。

Label 标签 on_ref_press 点击ref标记的文本触发

                  markup 需要先设置为真

以下是一个简单的使用Label的Kivy应用程序示例,可以在点击ref标记的文本时打印消息:

import kivy
from kivy.app import App
from kivy.uix.label import Labelclass MyLabel(Label):def on_ref_press(self, instance, value):print("ref标记的文本被点击:", value)class MyApp(App):def build(self):label = MyLabel(text='这是一个 <ref>链接</ref>。', markup=True)return labelif __name__ == '__main__':MyApp().run()

在这个例子中,MyLabel是一个自定义的Label类,它重写了on_ref_press()方法。当ref标记的文本被点击时,on_ref_press()方法将打印消息“ref标记的文本被点击:value”,其中value是ref标记中的文本。MyApp是一个简单的Kivy应用程序,它创建了一个MyLabel实例,并将其返回,这将在屏幕上显示一个标签,该标签包含一个ref标记的链接文本。在这个例子中,我们需要将markup设置为True,以便正确地解释标记

TextInput 输入框 on_text_validate 选中 按回车键的时候触发该事件

                            on_text  文本改变的时候触发该事件

                            on_double_tap 双击触发该事件

                            on_trible_tap 三击触发该事件

                            on_quad_touch 四指触摸时候触发该事件

以下是一个使用TextInput的Kivy应用程序示例,演示了多个事件的使用:

import kivy
from kivy.app import App
from kivy.uix.textinput import TextInputclass MyTextInput(TextInput):def on_text_validate(self):print("按下回车键,选中的文本是:", self.selection_text)def on_text(self, instance, value):print("文本改变,新的文本是:", value)def on_double_tap(self):print("双击TextInput")def on_triple_tap(self):print("三击TextInput")def on_quad_touch(self):print("四指触摸TextInput")class MyApp(App):def build(self):return MyTextInput()if __name__ == '__main__':MyApp().run()

在这个例子中,MyTextInput是一个自定义的TextInput类,它重写了多个事件的方法。具体来说,当用户在TextInput中按下回车键时,on_text_validate()方法将打印消息“按下回车键,选中的文本是:value”,其中value是选中的文本。当文本发生变化时,on_text()方法将打印出新的文本。当用户双击TextInput时,on_double_tap()方法将打印出“双击TextInput”的消息。当用户三击TextInput时,on_triple_tap()方法将打印出“三击TextInput”的消息。当用户使用四指触摸TextInput时,on_quad_touch()方法将打印出“四指触摸TextInput”的消息。

MyApp是一个简单的Kivy应用程序,它创建了一个MyTextInput实例,并将其返回,这将在屏幕上显示一个可编辑的文本输入框。当用户在TextInput中进行上述操作时,将打印相应的消息。

CheckBox 复选框 on_checkbox_active 选中复选框触发 需要在.py 文件内绑定具体方法

以下是一个简单的使用CheckBox的Kivy应用程序示例,可以在选中复选框时打印消息:

import kivy
from kivy.app import App
from kivy.uix.checkbox import CheckBoxclass MyCheckBox(CheckBox):def on_checkbox_active(self, instance, value):if value:print("复选框被选中")else:print("复选框被取消选中")class MyApp(App):def build(self):return MyCheckBox()if __name__ == '__main__':MyApp().run()

在这个例子中,MyCheckBox是一个自定义的CheckBox类,它重写了on_checkbox_active()方法。当复选框被选中时,on_checkbox_active()方法将打印消息“复选框被选中”,当复选框被取消选中时,on_checkbox_active()方法将打印消息“复选框被取消选中”。MyApp是一个简单的Kivy应用程序,它创建了一个MyCheckBox实例,并将其返回,这将在屏幕上显示一个复选框。当用户选中或取消选中复选框时,将打印相应的消息。

Slider 滑块 on_touch_down  在点击部件时触发

                  on_touch_up   在释放部件时触发

                  on_touch_move 移动时触发

以下是一个简单的使用Slider的Kivy应用程序示例,可以在滑动Slider时打印消息:

import kivy
from kivy.app import App
from kivy.uix.slider import Sliderclass MySlider(Slider):def on_touch_down(self, touch):if self.collide_point(*touch.pos):print("滑块被点击")return super().on_touch_down(touch)def on_touch_up(self, touch):if self.collide_point(*touch.pos):print("滑块被释放")return super().on_touch_up(touch)def on_touch_move(self, touch):if self.collide_point(*touch.pos):print("滑块移动中")return super().on_touch_move(touch)class MyApp(App):def build(self):return MySlider()if __name__ == '__main__':MyApp().run()

在这个例子中,MySlider是一个自定义的Slider类,它重写了on_touch_down()、on_touch_up()和on_touch_move()方法。当用户点击并按下Slider时,on_touch_down()方法将打印消息“滑块被点击”。当用户释放Slider时,on_touch_up()方法将打印消息“滑块被释放”。当用户移动Slider时,on_touch_move()方法将打印消息“滑块移动中”。同样,我们可以使用Slider其他的方法,例如on_value_changed(),来捕获Slider值更改的事件。

MyApp是一个简单的Kivy应用程序,它创建了一个MySlider实例,并将其返回,这将在屏幕上显示一个滑块。当用户在Slider上进行上述操作时,将打印相应的消息。

ProgressBar 进度条 max 允许最大值默认100

                     value 滑块使用的当前值 应为0到max之间

                    value_normalized  0-1 范围内的标准化值

           

以下是一个使用ProgressBar的Kivy应用程序示例,可以设置最大值和当前值,并使用value_normalized参数获取标准化值:

import kivy
from kivy.app import App
from kivy.uix.progressbar import ProgressBarclass MyApp(App):def build(self):max_value = 200current_value = 50progress_bar = ProgressBar(max=max_value, value=current_value)normalized_value = progress_bar.value_normalizedprint("当前值的标准化值为:", normalized_value)return progress_barif __name__ == '__main__':MyApp().run()

在这个例子中,MyApp是一个简单的Kivy应用程序,它创建了一个ProgressBar实例,并将其返回,这将在屏幕上显示一个进度条。我们使用max参数来设置最大值为200,value参数来设置当前值为50。然后,我们使用value_normalized参数获取标准化值,并将其打印出来以供参考。在这个例子中,标准化值为0.25,因为当前值是50,而最大值是200,因此50 / 200 = 0.25。

我们可以通过代码动态地更改进度条的值和最大值:

progress_bar = ProgressBar(max=200, value=100)
progress_bar.max = 300
progress_bar.value = 150

这将将进度条的最大值更改为300,并将当前值更改为150。我们还可以使用value_normalized参数来获取标准化值。

     

ToggleButton 切换按钮 触摸或者点击时 会在normal 和down 两种状态之间切换

以下是一个简单的使用ToggleButton的Kivy应用程序示例,可以在切换ToggleButton时打印消息:

import kivy
from kivy.app import App
from kivy.uix.togglebutton import ToggleButtonclass MyToggleButton(ToggleButton):def on_state(self, widget, value):if value == "down":print("ToggleButton被按下")else:print("ToggleButton被释放")class MyApp(App):def build(self):return MyToggleButton(text='切换按钮')if __name__ == '__main__':MyApp().run()

在这个例子中,MyToggleButton是一个自定义的ToggleButton类,它重写了on_state()方法。当ToggleButton被按下时,on_state()方法将打印消息“ToggleButton被按下”,当ToggleButton被释放时,on_state()方法将打印消息“ToggleButton被释放”。MyApp是一个简单的Kivy应用程序,它创建了一个MyToggleButton实例,并将其返回,这将在屏幕上显示一个切换按钮。当用户切换ToggleButton时,将打印相应的消息。

Switch 开关 on_active  激活时触发事件

在Kivy中,您可以使用Switch小部件来创建一个开关按钮,并且可以使用on_active事件来触发激活时的操作。以下是一个简单的示例代码:

from kivy.app import App
from kivy.uix.switch import Switchclass MySwitch(Switch):def on_active(self, switch, active):if active:print("Switch is on")else:print("Switch is off")class SwitchApp(App):def build(self):return MySwitch()if __name__ == '__main__':SwitchApp().run()

在上面的代码中,我们创建了一个名为MySwitch的自定义Switch小部件,并将其继承了Switch类。我们覆盖了on_active方法,并在其中添加了一些简单的逻辑来打印开关状态。

最后,我们创建了一个名为SwitchApp的应用程序,并将其构建为MySwitch小部件的实例。当我们运行应用程序时,将显示一个带有初始状态关闭的开关。当我们切换开关时,将触发on_active事件并打印开关的状态。

Video 加载视频文件流  

在Kivy中,我们可以使用Video小部件来加载视频文件流。以下是一个简单的示例代码,该代码演示了如何加载本地视频文件和网络视频流:

from kivy.app import App
from kivy.uix.video import Videoclass MyVideo(Video):def __init__(self, **kwargs):super(MyVideo, self).__init__(**kwargs)self.source = 'path/to/local/video.mp4' # 加载本地视频文件# self.source = 'http://example.com/path/to/remote/video.mp4' # 加载网络视频流self.state = 'play'self.options = {'eos': 'loop'}class VideoApp(App):def build(self):return MyVideo()if __name__ == '__main__':VideoApp().run()

在上面的代码中,我们创建了一个名为MyVideo的自定义Video小部件,并将其继承了Video类。我们在构造函数中设置了视频的来源,可以是本地视频文件路径或网络视频流的URL。我们还设置了视频的状态和选项,以便在加载后自动播放并循环播放。

最后,我们创建了一个名为VideoApp的应用程序,并将其构建为MyVideo小部件的实例。当我们运行应用程序时,将显示视频播放器,并自动开始播放加载的视频文件或流。


本文链接:https://www.ngui.cc/article/show-985529.html
Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000