Python tkinter库之Canvas自定义直线函数画随机色彩圆盘

简介: Python tkinter库之Canvas自定义直线函数画随机色彩圆盘

create_line() 需要两个点的坐标,若线段的一个端点作定点,另一个端点作某种运动,写两个点的坐标比较麻烦。如下图自定义一个画直线函数,以角度和长度为变量来作图相对要方便一些:


20210327124126344.png



代码如下: 同样的时间间隔,看上去 Line1()会比Line2() “转得”快2倍,角速度前者是后者的2倍。


import tkinter as tk
import pyautogui as ag
import random
from time import sleep as Delay
from math import sin
from math import cos
from math import pi
def Window_Open(W, H):
    X, Y = ag.size()
    winSize = str(W)+"x"+str(H)
    winPos = winSize + "+" + str((X - W) // 2)
    winPos += "+" + str((Y - H) // 2)
    win.geometry(winPos)
    win.resizable(False, False)
    title = u'桌面分辨率:' + str(X) + "x" + str(Y)
    title += ' ' * 5 + u'窗体大小:' + winSize
    win.title(title)
    win.update()
def Line1(x,y,d,rad=0,c='black'):
    "x,y 起始点坐标,d=长度,rad=与水平线夹角"
    coord = x,y,x + d * cos(pi*rad/180),y - d * sin(pi*rad/180)
    tCanvas.create_line(coord,fill=c)
def Line2(x,y,r,rad=0,c='black'):
    "x,y 线段中点坐标,r=半长,rad=与水平线夹角"
    coord = (x + r * cos(pi*rad/180),y - r * sin(pi*rad/180),
            x - r * cos(pi*rad/180),y + r * sin(pi*rad/180))
    tCanvas.create_line(coord,fill=c)
if __name__ == '__main__':
    win = tk.Tk()
    Window_Open(480,480)
    tCanvas = tk.Canvas(win, width=win.winfo_width(), height=480, bg='white')
    tCanvas.pack(side="top")
    Color = ['red','blue','green','magenta','navy','lawngreen','orange']
    for i in range(20):
        for r in range(0,360):
            c = random.choice(Color)
            Line1(240,240,200,r,c)
        tCanvas.update()
        Delay(0.05)
    Delay(2)
    for i in range(20):
        for r in range(0,180):
            c = random.choice(Color)
            Line2(240,240,200,r,c)
        tCanvas.update()
        Delay(0.05)
    win.mainloop()


效果图:

20210331070721300.gif



目录
相关文章
|
4天前
|
Python
使用Python的openpyxl库
【5月更文挑战第17天】使用Python的openpyxl库
14 2
|
1天前
|
机器学习/深度学习 算法 前端开发
2024年8个可以提高数据科学工作效率并节省宝贵时间的Python库,2024年最新记得把每一次面试当做经验积累
2024年8个可以提高数据科学工作效率并节省宝贵时间的Python库,2024年最新记得把每一次面试当做经验积累
2024年8个可以提高数据科学工作效率并节省宝贵时间的Python库,2024年最新记得把每一次面试当做经验积累
|
3天前
|
程序员 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,它可以简洁地实现函数的增强、扩展和重用。本文将深入探讨Python中装饰器的工作原理、常见应用场景以及如何自定义装饰器,帮助读者更好地理解和运用这一重要的编程概念。
|
3天前
|
网络协议 数据处理 调度
深入探索Python异步编程:asyncio库的应用与实践
在现代软件开发中,异步编程已成为处理并发和I/O密集型任务的重要策略。本文将带您深入探索Python的asyncio库,解析其背后的设计原理,并通过实例展示如何在实际项目中应用asyncio实现高效的异步编程。我们不仅会探讨asyncio的基本用法,还会分析其性能优势,并探讨其与其他并发模型的比较。此外,文章还将涵盖asyncio在Web开发、网络编程和数据处理等场景中的应用案例,帮助您更好地理解并掌握这一强大的异步编程工具。
|
3天前
|
数据采集 Python
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
|
3天前
|
数据采集 数据挖掘 Python
Python学习——函数,2024年最新手持4个大厂offer的我
Python学习——函数,2024年最新手持4个大厂offer的我
|
3天前
|
数据采集 数据挖掘 关系型数据库
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
Excel计算函数(计算机二级)(1),2024年最新2024Python架构面试指南
|
3天前
|
存储 Java Shell
【Python学习教程】Python函数和lambda表达式_6(1),2024蚂蚁金服面试题及答案
【Python学习教程】Python函数和lambda表达式_6(1),2024蚂蚁金服面试题及答案
|
4天前
|
程序员 Python
tesseract库的安装与使用及在python中使用,Python程序员秋招三面蚂蚁金服
tesseract库的安装与使用及在python中使用,Python程序员秋招三面蚂蚁金服
|
4天前
|
Python
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道