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
小部件的实例。当我们运行应用程序时,将显示视频播放器,并自动开始播放加载的视频文件或流。
kivy UX 组件相关推荐
- 快应用信息流列表组件
recommend组件 <import name="com-large" src="./list/large.ux"></import> ...
- Svelte的UI组件库
Svelte Material UI 地址:https://sveltematerialui.com/ Material: 谷歌出品的扁平化风格. Carbon Components Svelte 地 ...
- 我在神策做研发 | 成长中的成都研发中心
在这里,他们既见证了团队从初创到迅猛增长,又作为神策的西南军团一路披荆斩棘.这里充实并快乐,热情且刺激,快来和他们一起,品尝神策不一样的成都味道. 好吃的这么多,吃哪家? 王小虾 | 后端研发工程师 ...
- Angular、React、Vue.js 等 6 大主流 Web 框架都有什么优缺点?
来自:开源中国 协作翻译 链接:oschina.net/translate/web-frameworks-conclusions 原文:sitepen.com/blog/2017/11/10/web- ...
- msbuild构建步骤_如何按照以下步骤构建最终的AI聊天机器人
msbuild构建步骤 by Paul Pinard 保罗·皮纳德(Paul Pinard) 如何按照以下步骤构建最终的AI聊天机器人 (How to build the ultimate AI ch ...
- MixedRealityToolkit-Unity:MR应用必用神器
洪流学堂,让你快人几步.你好,我是你的技术探路者郑洪智,你可以叫我大智. 本篇文章首发于我的公众号:洪流学堂 MRTK-Unity是一个由Microsoft驱动的开源项目,提供了多种组件和功能,用于加 ...
- 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备
孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自学 ...
- React Native Apps的最佳主题
您是否对默认格式和无聊的应用程序感到厌倦? React Native主题可以帮助使您的应用美观. 应用主题或React Native模板可以帮助您单击按钮来创建杰作. 如果您想节省数百小时的开发工作, ...
- Web前端技术 Web学习资料 Web学习路线 Web入门宝典
学习路线 第一章 核心 1.Node Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个 ...
最新文章
- Android基础是什么,Android基础概念
- xcode代码没颜色的解决方案
- Spring 自动装配 ‘byType’
- python达梦数据库_python 操作达 梦数据库
- Hadoop简介 (资源)
- SpringMVC 控制器默认支持GET和POST两种方式
- redis在Windows下以后台服务一键搭建集群(多机器)
- 处理App状态改变的策略
- 斐讯k2虚拟服务器设置,斐讯K2调配设置
- ios 权限提示语_uni-app开发经验分享十一: uniapp iOS云打包修改权限提示语
- 好男07演唱会将开唱 劲歌热舞点燃盛夏激情
- ubuntu系统强制解锁
- 计算机毕设项目 python微信公众平台机器人
- The following signatures couldn‘t be verified because the public key is not available问题解决
- 说一下自动化测试的优缺点
- python字符串左边补0_python 实现数字字符串左侧补零的方法
- 钉钉开放平台API对接第一讲
- 大地坐标系与空间直角坐标系的相互转换
- 视频教程-VUE前端开发/前后端分离-Java
- python 图片中物体识别_使用TensorFlow识别照片中的物体
热门文章
- C++11标准模板(STL)- 算法 - 集合操作(在已排序范围上)(std::set_difference)
- 友情链接在html中怎么写,用描文本、友情链接交易方式教你如何制作网页链接...
- 韩国人彻底疯狂了,竟想向中俄索要大片领土
- byvoid面试阿里星 面试官的评价--我辈楷模
- MacBook 启动/禁用翻盖自动开关机
- 云中“图书馆”:陈天桥的“平台”诱惑
- SmokeTest测试流程
- 再提供两套清纯美女扑克
- 01-Java语法基础(四)-案例
- 百度网盘突然大调整,网友:我 2T 的老师没地方放了...