tkinter彩树

如本文章标有价格,需议价或其它事情商议请加微信scratch8

李兴球Python画tkinter彩树
李兴球Python画tkinter彩树

本人编写的用tkinter模块的画布制作的一颗彩树。

"""
    tkinter彩树.py
    由于画布是左上角为原点,所以y坐标轴向下为正。
    角度方面的话,90度就变成向下了,-90度就变成向上了。
"""
import math, colorsys
from tkinter import *

offset = 17                 # 角度偏移量
width, height = 1000, 800   # 图像分辨率
maxd = 12                   # 最大递归深度
length = 8.0                # 分支长度扩大因子

root = Tk()                 # 新建窗口  
root.title('tkinter彩树')   # 设定标题
canvas = Canvas(root,width=width,height=height,bg='black')  # 新建RGB画布
canvas.pack()
   
def draw_tree(x1, y1, angle, depth):
    if depth>= 0:
        # 计算分支的下一个顶点
        x2 = x1 + int(math.cos(math.radians(angle)) * depth * length)
        y2 = y1 + int(math.sin(math.radians(angle)) * depth * length)
 
        # 让分支的颜色和调用层次产生关联
        (r, g, b) = colorsys.hsv_to_rgb(float(depth) / maxd, 1.0, 1.0)
        r, g, b = int(255 * r), int(255 * g), int(255 * b)
        color = '#{:02x}{:02x}{:02x}'.format( r,g ,b)          # rgb2hex
       
        # 画树支        
        canvas.create_line(x1, y1, x2, y2,fill=color,width=depth)
 
        # 左右各务两个更短的分支
        draw_tree(x2, y2, angle - offset, depth - 1)
        draw_tree(x2, y2, angle + offset, depth - 1)
 
#  调用递归函数开始绘画
x = int(width/2)
y = int(height * 0.9)
draw_tree(x,y, -90, maxd)

root.mainloop()
 

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » tkinter彩树
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页