kivy画板
- from kivy.app import App
- from kivy.graphics import Line, Color # 引入绘图线条,颜色
- from kivy.uix.widget import Widget # 引入控件
- from kivy.lang import Builder
- from kivy.utils import get_color_from_hex
- Builder.load_string("""
- #:import C kivy.utils.get_color_from_hex
- <DrawCanvasWidget>:
- canvas.before:
- # 最下面纸的颜色
- Color:
- rgba:[1,1,1,1]
- # 形状
- Rectangle:
- # 位置
- pos:self.pos
- # 大小
- size:self.size
- Button:
- background_color:C('#FF0000')
- text:'1'
- """)
- # 布局类
- class DrawCanvasWidget(Widget):
- def __init__(self, **kwargs):
- super().__init__(**kwargs)
- # 1.设置默认颜色,在画布中加入颜色 16进制写法 # 画笔的颜色
- new_color = get_color_from_hex('#FF0000')
- self.canvas.add(Color(*new_color))
- # 1.设置默认颜色,在画布中加入颜色 十进制写法传入0到1的浮点数
- # self.canvas.add(Color(rgb=[0,0,0]))
- self.line_width = 1 # 线宽
- # 触摸显示轨迹
- def on_touch_down(self, touch):
- if Widget.on_touch_down(self,touch):
- return
- with self.canvas:
- touch.ud['current_line'] = Line(points=(touch.x,touch.y),width=self.line_width)
- # 连线
- def on_touch_move(self, touch):
- if 'current_line' in touch.ud:
- touch.ud['current_line'].points += (touch.x,touch.y)
- # 应用类
- class PaintApp(App):
- def build(self):
- self.draw_canvas_widget = DrawCanvasWidget()
- return self.draw_canvas_widget
- if __name__ == '__main__':
- PaintApp().run()
kivy画板的更多相关文章
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
1. 框架代码 用 PyCharm 新建一个名为 SimplePaintApp 的项目,然后新建一个名为 simple_paint_app.py 的 Python 源文件, 在代码编辑器中,输入以下框 ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):3. 随机颜色及清除按钮
1. 随机颜色 通过前面的教程,咪博士已经带大家实现了画板的绘图功能.但是,现在画板只能画出黄色的图案,还十分单调,接下来咪博士就教大家,如何使用随机颜色,让画板变得五彩斑斓. 改进后的代码如下: f ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能
1. 理解 kivy 坐标系统 上一节中,咪博士带大家实现了画板程序的基础框架,以及一个基本的自定义窗口部件(widget).在上一节的末尾,咪博士留了一道关于 kivy 坐标系统的思考题给大家.通过 ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):0. 项目简介 & 成果展示
本教程咪博士将带领大家学习创建自己的窗口部件 (widget).最终,我们完成的作品是一个简易的画板程序. 当用 kivy 创建应用时,我们需要仔细思考以下 3 个问题: 我们创建的应用需要处理什么数 ...
- 用kivy学习制作简易调色画板app
制作一款简易的调色画板,要用到的知识:页面布局.ToggleButton.ToggleButtonBehavior.get_color_from_hex(兼容十六进制编码颜色):功能上要可以选择颜色, ...
- 『Python Kivy』Kivy模板语言KV说明
语言概念 KV语言允许你以声明的方式创建控件树,以及绑定控件属性到其他的控件或使用一种自然的方式进行回调. 它允许非常快速并灵活的改变你的UI. 它还可以让你的应用程序与应用程序的界面进行分隔. 如何 ...
- 『Python Kivy』官方乒乓球游戏示例解析
本篇文章用于对Kivy框架官方所给出的一个「乒乓球」小游戏的源码进行简单地解析.我会尽可能的将方方面面的内容都说清楚.在文章的最下方为官方所给出的这个小游戏的教程以及游戏源码. 由于篇幅所限,本文只简 ...
- 使用HTML5的cavas实现的一个画板
<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-e ...
- iOS: 为画板App增加 Undo/Redo(撤销/重做)操作
这个随笔的内容以上一个随笔为基础,(在iOS中实现一个简单的画板),上一个随笔实现了一个简单的画板: 今天我们要为这个画板增加Undo/Redo操作,当画错了一笔,可以撤销它,或者撤销之后后悔了, ...
随机推荐
- [考试总结]noip模拟39
不写那么多没用的了 开题就发现 \(T4\) 原题, \(T1\) 大水题. 然后发现 \(T4\) 忘了.... 不扯了 打地鼠 大水题,我代码都不想放... 算了,还是放一下吧.. #includ ...
- appnium显式等待机制
强制等待: sleep不推荐全局隐式等待 全局隐式等待: 在服务端等待 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); ...
- IKEv2协议协商流程: (IKE-SA-INIT 交换)第二包
IKEv2协议协商流程: (IKE-SA-INIT 交换)第二包 文章目录 IKEv2协议协商流程: (IKE-SA-INIT 交换)第二包 1. IKEv2 协商总体框架 2. 第二包流程图 3. ...
- CSS001. 纯CSS实现瀑布流(纵向排序)
通过 Multi-columns 相关的属性 column-count.column-gap 配合 break-inside 来实现瀑布流布局. 首先对包裹图片的盒子增加样式,column-count ...
- Vite详解
vite 目录 一.推荐两个插件插件 Volar Vue 3 Snippets 二.vite简介 优势分析 浏览器支持 三.vite搭建vue3.x项目 1.创建项目 2.集成Vue-Router 3 ...
- java线程day-01
综述:下面写的是我学习java线程时做的一些笔记和查阅的一些资料总结而成.大多以问答的形式出现. 一.什么是线程? 答:线程是一个轻量级的进程,现在操作系统中一个基本的调度单位,而且线程是彼此独立执行 ...
- phpstoem破解
https://blog.csdn.net/voke_/article/details/78794567
- cordova 打包 守护进程无法启动
方案 1 : 添加环境变量 _JAVA_OPTIONS = -Xmx512M 2: 在新建的 系统变量里 变量名 _JAVA_OPTIONS 变量值 -Djava.net.preferIPv4 ...
- 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视GCC编译全过程 | 百篇博客分析OpenHarmony源码| v57.01
百篇博客系列篇.本篇为: v57.xx 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...
- Redis核心原理与实践--散列类型与字典结构实现原理
Redis散列类型可以存储一组无序的键值对,它特别适用于存储一个对象数据. > HSET fruit name apple price 7.6 origin china 3 > HGET ...