kivy条形图完整代码
代码 完整 条形图 Kivy
2023-09-14 09:14:34 时间
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
import random
from kivy.uix.label import Label
Builder.load_string('''
<CameraClick>:
orientation: 'vertical'
RelativeLayout:
name:"index_layout"
canvas:
Color:
rgba: 1,1,1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"parent_layout"
rows:1
GridLayout:
name:"left"
cols:1
GridLayout:
name:"left_1"
cols:1
canvas:
Color:
rgba: 0.5, 1, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_2"
cols:1
size_hint_y:5
canvas:
Color:
rgba: 1, 0, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_3"
cols:1
canvas:
Color:
rgba: 1, 1, 0.6, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_4"
cols:1
canvas:
Color:
rgba: 1, 0.9, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center"
cols:1
size_hint_x:6
GridLayout:
name:"center_1"
rows:1
canvas:
Color:
rgba: 1, 0, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center_2"
rows:1
size_hint_y:5
GridLayout:
name:"center_3"
rows:1
canvas:
Color:
rgba: 1, 0.5, 0.2, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center_4"
rows:1
canvas:
Color:
rgba: 1, 0.3, 0.2, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"right"
rows:1
''')
line1=Builder.load_string("""
GridLayout:
name:"line1"
rows:1
canvas:
Color:
rgba: 0.5,0.5,0.3, 1
Line:
points:self.pos[0],self.pos[1]+30,self.pos[0],self.pos[1]+self.size[1]-30
width:5
""")
line2 = Builder.load_string("""
GridLayout:
name:"line2"
rows:1
canvas:
Color:
rgba: 0.5,0.5,0.3, 1
Line:
points:self.pos[0],self.pos[1]+2*self.size[1]+30,self.pos[0]+self.size[0],self.pos[1]+2*self.size[1]+30
width:5
""")
lines="""
GridLayout:
name:"{}"
rows:1
canvas:
Color:
rgba:{}
Line:
points:{}
width:15
cap:"square"
"""
class CameraClick(BoxLayout):
pass
class DrawBar():
def build(self):
y_labels= ("100", "80","60" , "40", "20","0")
x_labels= ("S","F","D","H","S","A","N","x","y","z")
printer=CameraClick()
# 绘制纵坐标
for text in y_labels:
printer.children[0].children[0].children[2].children[2].add_widget(Label(text=text))
# 标题
printer.children[0].children[0].children[1].children[3].add_widget(Label(text="title",halign="center"))
# 设置横纵坐标轴刻度
# line1
# 绘制坐标轴
printer.children[0].children[0].children[1].children[2].add_widget(line1)
printer.children[0].children[0].children[1].children[0].add_widget(line2)
# 使用for来控制条带的
line_color="{},{},{}, 1"
line_name="line3"
line1_points="self.pos[0]-15,self.pos[1]+30+15,self.pos[0]-15,self.pos[1]+self.size[1]*{}+15"
line_heithts=[0.4,0.5,0.8,0.1,0.3,0.6,0.7,0.4,0.9,0.5]
for _,line_height in zip(x_labels,line_heithts):
line3 = Builder.load_string(lines.format(line_name,line_color.format(random.random(),random.random(),random.random()),line1_points.format(line_height)))
printer.children[0].children[0].children[1].children[2].add_widget(line3)
# 绘制横坐标
for text in x_labels:
printer.children[0].children[0].children[1].children[1].add_widget(Label(text=text))
return printer
if __name__ == '__main__':
runTouchApp(DrawBar().build())
可以传递参数代码
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
import random
from kivy.uix.label import Label
Builder.load_string('''
<CameraClick>:
orientation: 'vertical'
RelativeLayout:
name:"index_layout"
canvas:
Color:
rgba: 1,1,1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"parent_layout"
rows:1
GridLayout:
name:"left"
cols:1
GridLayout:
name:"left_1"
cols:1
canvas:
Color:
rgba: 0.5, 1, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_2"
cols:1
size_hint_y:5
canvas:
Color:
rgba: 1, 0, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_3"
cols:1
canvas:
Color:
rgba: 1, 1, 0.6, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_4"
cols:1
canvas:
Color:
rgba: 1, 0.9, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center"
cols:1
size_hint_x:6
GridLayout:
name:"center_1"
rows:1
canvas:
Color:
rgba: 1, 0, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center_2"
rows:1
size_hint_y:5
GridLayout:
name:"center_3"
rows:1
canvas:
Color:
rgba: 1, 0.5, 0.2, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center_4"
rows:1
canvas:
Color:
rgba: 1, 0.3, 0.2, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"right"
rows:1
''')
line1=Builder.load_string("""
GridLayout:
name:"line1"
rows:1
canvas:
Color:
rgba: 0.5,0.5,0.3, 1
Line:
points:self.pos[0],self.pos[1]+30,self.pos[0],self.pos[1]+self.size[1]-30
width:5
""")
line2 = Builder.load_string("""
GridLayout:
name:"line2"
rows:1
canvas:
Color:
rgba: 0.5,0.5,0.3, 1
Line:
points:self.pos[0],self.pos[1]+2*self.size[1]+30,self.pos[0]+self.size[0],self.pos[1]+2*self.size[1]+30
width:5
""")
lines="""
GridLayout:
name:"{}"
rows:1
canvas:
Color:
rgba:{}
Line:
points:{}
width:15
cap:"square"
"""
class CameraClick(BoxLayout):
pass
class DrawBar():
def __init__(self):
self.printer=CameraClick()
def call_back(self,line_heithts = [0.4, 0.5, 0.8, 0.1, 0.3, 0.6, 0.7, 0.4, 0.9, 0.5]):
line_nums_in_layout = len(self.printer.children[0].children[0].children[1].children[2].children)
if line_nums_in_layout > 1:
print(line_nums_in_layout)
for _ in range(line_nums_in_layout - 1):
self.printer.children[0].children[0].children[1].children[2].children.pop(0)
line_color = "{},{},{}, 1"
line_name = "line3"
line1_points = "self.pos[0]-15,self.pos[1]+30+15,self.pos[0]-15,self.pos[1]+self.size[1]*{}+15"
for line_height in line_heithts:
line3 = Builder.load_string(
lines.format(line_name, line_color.format(random.random(), random.random(), random.random()),
line1_points.format(line_height)))
self.printer.children[0].children[0].children[1].children[2].add_widget(line3)
def build(self,line_heithts = [0.4, 0.5, 0.8, 0.1, 0.3, 0.6, 0.7, 0.4, 0.9, 0.5]):
y_labels= ("100", "80","60" , "40", "20","0")
x_labels= ("S","F","D","H","S","A","N","x","y","z")
# 绘制纵坐标
for text in y_labels:
self.printer.children[0].children[0].children[2].children[2].add_widget(Label(text=text))
# 标题
self.printer.children[0].children[0].children[1].children[3].add_widget(Label(text="title",halign="center"))
# 设置横纵坐标轴刻度
# line1
# 绘制坐标轴
self.printer.children[0].children[0].children[1].children[2].add_widget(line1)
self.printer.children[0].children[0].children[1].children[0].add_widget(line2)
# 使用for来控制条带的
self.call_back(line_heithts = [0.4, 0.5, 0.8, 0.1, 0.3, 0.6, 0.7, 0.4, 0.9, 0.5])
# line_nums_in_layout=len(self.printer.children[0].children[0].children[1].children[2].children)
# if line_nums_in_layout >1:
# print(line_nums_in_layout)
# for _ in range(line_nums_in_layout-1):
#
# self.printer.children[0].children[0].children[1].children[2].children.pop(0)
#
#
# line_color="{},{},{}, 1"
# line_name="line3"
# line1_points="self.pos[0]-15,self.pos[1]+30+15,self.pos[0]-15,self.pos[1]+self.size[1]*{}+15"
# line_heithts=[0.4,0.5,0.8,0.1,0.3,0.6,0.7,0.4,0.9,0.5]
# for line_height in line_heithts:
# line3 = Builder.load_string(lines.format(line_name,line_color.format(random.random(),random.random(),random.random()),line1_points.format(line_height)))
# self.printer.children[0].children[0].children[1].children[2].add_widget(line3)
# 绘制横坐标
for text in x_labels:
self.printer.children[0].children[0].children[1].children[1].add_widget(Label(text=text))
return self.printer
if __name__ == '__main__':
runTouchApp(DrawBar().build())
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
import random
from kivy.uix.label import Label
from kivy.clock import Clock
Builder.load_string('''
<CaClick>:
orientation: 'vertical'
RelativeLayout:
name:"index_layout"
canvas:
Color:
rgba: 1,1,1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"parent_layout"
rows:1
GridLayout:
name:"left"
cols:1
GridLayout:
name:"left_1"
cols:1
canvas:
Color:
rgba: 0.5, 1, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_2"
cols:1
size_hint_y:5
canvas:
Color:
rgba: 1, 0, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_3"
cols:1
canvas:
Color:
rgba: 1, 1, 0.6, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"left_4"
cols:1
canvas:
Color:
rgba: 1, 0.9, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center"
cols:1
size_hint_x:6
GridLayout:
name:"center_1"
rows:1
canvas:
Color:
rgba: 1, 0, 1, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center_2"
rows:1
size_hint_y:5
GridLayout:
name:"center_3"
rows:1
canvas:
Color:
rgba: 1, 0.5, 0.2, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"center_4"
rows:1
canvas:
Color:
rgba: 1, 0.3, 0.2, 1
Rectangle:
pos:self.pos
size: self.size
GridLayout:
name:"right"
rows:1
''')
line1="""
GridLayout:
name:"line1"
rows:1
canvas:
Color:
rgba: 0.5,0.5,0.3, 1
Line:
points:self.pos[0],self.pos[1]+30,self.pos[0],self.pos[1]+self.size[1]-30
width:5
"""
line2 = """
GridLayout:
name:"line2"
rows:1
canvas:
Color:
rgba: 0.5,0.5,0.3, 1
Line:
points:self.pos[0],self.pos[1]+2*self.size[1]+30,self.pos[0]+self.size[0],self.pos[1]+2*self.size[1]+30
width:5
"""
lines="""
GridLayout:
name:"{}"
rows:1
canvas:
Color:
rgba:{}
Line:
points:{}
width:{}
cap:"square"
"""
class CaClick(BoxLayout):
pass
class DrawBar():
def __init__(self):
self.printer=CaClick()
def call_back(self,line_heights = [0.4, 0.5, 0.8, 0.1, 0.3, 0.6, 0.7, 0.4, 0.9, 0.5]):
line_nums_in_layout = len(self.printer.children[0].children[0].children[1].children[2].children)
if line_nums_in_layout > 1:
print(line_nums_in_layout)
for _ in range(line_nums_in_layout - 1):
self.printer.children[0].children[0].children[1].children[2].children.pop(0)
line_color = "{},{},{}, 1"
line_name = "line3"
line1_points = "self.pos[0]-15,self.pos[1]+30+15,self.pos[0]-15,self.pos[1]+self.size[1]*{}+15"
for line_height in line_heights:
line3 = Builder.load_string(
lines.format(line_name, line_color.format(random.random(), random.random(), random.random()),
line1_points.format(line_height),"self.size[1]//{}".format(2*len(line_heights))))
self.printer.children[0].children[0].children[1].children[2].add_widget(line3)
def build(self,line_heithts = [0.4, 0.5, 0.8, 0.1, 0.3, 0.6, 0.7, 0.4, 0.9, 0.5]):
y_labels= ("100", "80","60" , "40", "20","0")
x_labels= ("S","F","D","H","S","A","N","x","y","z")
# 绘制纵坐标
for text in y_labels:
self.printer.children[0].children[0].children[2].children[2].add_widget(Label(text=text))
# 标题
self.printer.children[0].children[0].children[1].children[3].add_widget(Label(text="title",halign="center"))
# 设置横纵坐标轴刻度
# line1
# 绘制坐标轴
self.printer.children[0].children[0].children[1].children[2].add_widget(Builder.load_string(line1))
self.printer.children[0].children[0].children[1].children[0].add_widget(Builder.load_string(line2))
# 使用for来控制条带的
self.call_back(line_heights = [0.4, 0.5, 0.8, 0.1, 0.3, 0.6, 0.7, 0.4, 0.9, 0.5])
# 绘制横坐标
for text in x_labels:
self.printer.children[0].children[0].children[1].children[1].add_widget(Label(text=text))
return self.printer
class RunNewKivy():
def run_kivy(self,data):
runTouchApp(DrawBar().build(data))
if __name__ == '__main__':
runTouchApp(DrawBar().build())
相关文章
- 经典vbs代码收集「建议收藏」
- 20款优秀的基于浏览器的在线代码编辑器「建议收藏」
- Android + Appium 自动化测试完整的环境配置及代码详解
- 监控即代码:云原生世界中的新兴想法
- 使用Python和OCR进行文档解析的完整代码演示
- 2023美赛C题思路(30min视频讲解+文档思路)+c题完整代码【源码分享】
- eunomia-bpf 0.3.0 发布:只需编写内核态代码,轻松构建、打包、发布完整的 eBPF 应用
- 天呐!我用 go 从零开始写了一个 k8s 应用管理工具(附完整代码和开发过程)
- 【Flutter】Future 与 FutureBuilder 异步编程代码示例 ( FutureBuilder 构造函数设置 | 处理 Flutter 中文乱码 | 完整代码示例 )
- 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )
- 【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )
- 【Linux 内核】线程调度示例一 ④ ( pthread_attr_init 初始化线程属性对象 | 完整代码示例 )
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )
- Github重定义开源软件,代码将成下一种语言?
- 研究发现从 Stack Overflow 复制代码的习惯导致 GitHub 项目安全性下降
- 深入了解Linux病毒代码,防范未然!(linux病毒代码)
- ext实现完整的登录代码
- C#调用存储过程简单完整的实例代码
- Js检查变量类型的代码()
- 检测png图片是否完整的php代码
- 基本jquery的控制tabs打开的数量的代码
- php简单的会话类代码
- 常用的几段javascript代码分享
- Winform基于多线程实现每隔1分钟执行一段代码
- 一个不易被发现的PHP后门代码解析
- Delphi实现碰撞球体完整实例代码
- Delphi实现图像文本旋转特效完整实例代码
- C#聊天程序服务端与客户端完整实例代码
- 基于C语言实现五子棋游戏完整实例代码
- asp实现检查ip地址是否为内网或者私有ip地址的代码分享