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
小部件的实例。当我们运行应用程序时,将显示视频播放器,并自动开始播放加载的视频文件或流。
相关文章
- 数据结构:简单记录顺序表、链表、栈、队列
初学者很容易认为顺序表、链表、栈、队列是四种并列的数据结构,其实仔细想想并不是。 注意区分: 顺序表和链表是指数据的存储结构,是线性表的一种,顺序表一般指的就是数组,数据存储的逻辑顺序和物理顺序都是连续的&a…...
2023/9/29 11:08:23 - ue5读取自定义文件夹中内容
一、复制文件夹到Content内 二、读取文件内容,直接使用相对路径就可以了/Content,Resource Bundle存储文件夹名的变量。Load Text为自定义的读取json文件的方法,我之前的文章讲了怎么操作。 ue5读取外部文件_艺菲的博客-CSDN博客 三、根据js…...
2023/9/29 11:03:38 - PHP各种老版本下载方式
最近因工作需要,要下载PHP7.3的最新版本版本。 PHP官网上提供了各种老版本下载地址: https://windows.php.net/downloads/releases/archives/ 下载速度不稳定,时快时慢。 使用前,给下载留足时间。 貌似晚上速度快一些。...
2023/9/29 11:00:08 - linux应用之文件读取
文章目录 常见函数例程 常见函数 1)fopen()函数 原型 FILE *fopen(const char *filename, const char *mode);参数filename指定要打开的文件名,mode指定打开文件的模式(如只读、只写、追加等)。函数返回一个指向FILE类型的指针&…...
2023/9/29 10:59:34 - 如何自动转发接收的请求报头?
了解OpenTelemetry的朋友应该知道,为了将率属于同一个请求的多个操作(Span)串起来,上游应用会生成一个唯一的TraceId。在进行跨应用的Web调用时,这个TraceId和代表跟踪操作标识的SpanID一并发给目标应用,W3…...
2023/9/29 10:58:00 - 工厂方法模式 创建型模式之四
工厂方法模式定义一个创建对象的接口,让子类决定实例化那个类,也就是让类的实例化推迟到子类中进行。因为当需要增加一个新的产品时,我们需要增加一个具体的产品类和与之对应的具体子工厂,然后在具体子工厂方法中进行对象实例化&a…...
2023/9/29 10:52:08
最新文章
- 数据结构:简单记录顺序表、链表、栈、队列
初学者很容易认为顺序表、链表、栈、队列是四种并列的数据结构,其实仔细想想并不是。 注意区分: 顺序表和链表是指数据的存储结构,是线性表的一种,顺序表一般指的就是数组,数据存储的逻辑顺序和物理顺序都是连续的&a…...
2023/9/29 11:08:23 - ue5读取自定义文件夹中内容
一、复制文件夹到Content内 二、读取文件内容,直接使用相对路径就可以了/Content,Resource Bundle存储文件夹名的变量。Load Text为自定义的读取json文件的方法,我之前的文章讲了怎么操作。 ue5读取外部文件_艺菲的博客-CSDN博客 三、根据js…...
2023/9/29 11:03:38 - PHP各种老版本下载方式
最近因工作需要,要下载PHP7.3的最新版本版本。 PHP官网上提供了各种老版本下载地址: https://windows.php.net/downloads/releases/archives/ 下载速度不稳定,时快时慢。 使用前,给下载留足时间。 貌似晚上速度快一些。...
2023/9/29 11:00:08 - linux应用之文件读取
文章目录 常见函数例程 常见函数 1)fopen()函数 原型 FILE *fopen(const char *filename, const char *mode);参数filename指定要打开的文件名,mode指定打开文件的模式(如只读、只写、追加等)。函数返回一个指向FILE类型的指针&…...
2023/9/29 10:59:34 - 如何自动转发接收的请求报头?
了解OpenTelemetry的朋友应该知道,为了将率属于同一个请求的多个操作(Span)串起来,上游应用会生成一个唯一的TraceId。在进行跨应用的Web调用时,这个TraceId和代表跟踪操作标识的SpanID一并发给目标应用,W3…...
2023/9/29 10:58:00 - 工厂方法模式 创建型模式之四
工厂方法模式定义一个创建对象的接口,让子类决定实例化那个类,也就是让类的实例化推迟到子类中进行。因为当需要增加一个新的产品时,我们需要增加一个具体的产品类和与之对应的具体子工厂,然后在具体子工厂方法中进行对象实例化&a…...
2023/9/29 10:52:08 - 国内可使用chatGPT的十三种方式
国内AI 1. 开放猫 Chat机器人https://mirrorchat.extkj.cn/ chat机器人: Chat机器人https://mirrorchat.extkj.cn/ 3.免费学习测试 免费学习测试https://chat.wuguokai.cn/#/chat/1683348236237 4.AI文本工具站 AI文本工具站一个用于提高工作效率的文本工具网站,应用…...
2023/8/14 13:04:36 - 基于ChatGPT3.5 API实现的私有化web程序源码+使用说明,一键部署属于自己定制化的 chatgpt web 程序
chatgpt-web 本项目可以一键部署属于自己定制化的 chatgpt web 程序(兼容gpt3.5), 只需下载release中对应平台的项目文件,修改配置后执行,打开 http://127.0.0.1:8080 ,便可以获得属于自己的chatgpt网站。 参考项目:co…...
2023/8/14 19:59:25 - ChatGPT Plus用户专享:86款高效功能插件,详尽安装与使用全攻略
在前天的文章中,我们介绍了 ChatGPT 开放的全新模式 Web Browsing(网页浏览),启用后 ChatGPT 就可以开始上网,收集最新的互联网资料进行作答。 其他关于chatgpt使用方面:请访问: 链接…...
2023/8/14 10:16:53 - ChatGPT自然语言处理的新里程碑
ChatGPT中文网是一个面向中国用户的聊天机器人网站,旨在为国内用户提供一个自然的环境、有趣、实用的聊天体验。它使用最新的自然语言处理技术来帮助用户更好地理解他们的聊天对话,还可以帮助用户解决日常生活中的问题,提供有趣的谈话内容以及…...
2023/8/15 8:22:45 - 国内版ChatGPT最全使用方法及使用用途技巧汇总
ChatGPT人工智能技术的出现确实会让一些人担心自己的工作会不会被取代。但实际上,人工智能技术只会替代那些可以被程序自动化的重复性、标准化、无脑力的工作,而对于需要人类创意、想象力和复杂思维的工作来说,AI人工智能技术的发展对于人类来…...
2023/8/14 10:55:47 - ChatGPT和Midjourney王炸组合,开启AI新时代
目录 序言 一:使用ChatGPT进行对话 二:调用newbies robot 三:举例说明 四:付费和使用限制 序言 随着人工智能技术的不断发展,越来越多的人开始使用人工智能工具来创作图画。在这里,我将分享如何结合Ch…...
2023/8/15 10:03:43