Python tkinter库之Canvas正方形旋转

简介: Python tkinter库之Canvas正方形旋转

canvas.create_rectangle() 只能画水平放置的矩形,旋转任意角度的矩形只能用 tCanvas.create_polygon() 来达成,如下图:

20210328221304422.png


旋转方式一:以左下角为定点,逆时针旋转a角度;


旋转方式二:以中心点为定点,逆时针旋转a角度;


以正方形为例, 画好坐标轴计算好各顶点坐标;


(若要旋转矩形,边长变量从一个变成长和宽两个,坐标重新计算)

计算好坐标后就可用create_polygon()写自定义函数,源代码如下:


import tkinter as tk
import pyautogui as ag
import random
from time import sleep as Delay
from math import sqrt
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 Rect1(x,y,w,rad=0,c='black'):
    "x,y 左下角坐标,w=边长,rad=底边与水平线的夹角"
    a=pi*rad/180
    coord = (x,y,x + w * cos(a),y - w * sin(a),
             x + w * (cos(a)-sin(a)),
             y - w * (cos(a)+sin(a)),
             x - w * sin(a), y - w * cos(a))
    tCanvas.create_polygon(coord,fill=c)
def Rect2(x,y,w,rad=45,c='black'):
    "x,y 中心坐标,w=半长,rad=对角线与坐标轴的夹角"
    a=pi*rad/180
    coord = (x - w * sin(a)/sqrt(2),y - w * cos(a)/sqrt(2),
             x + w * cos(a)/sqrt(2),y - w * sin(a)/sqrt(2),
             x + w * sin(a)/sqrt(2),y + w * cos(a)/sqrt(2),
             x - w * cos(a)/sqrt(2),y + w * sin(a)/sqrt(2))
    tCanvas.create_polygon(coord,fill=c)
if __name__ == '__main__':
    win = tk.Tk()
    Window_Open(800,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']
    w=50
    for r in range(0,1171,5):
        c = random.choice(Color)
        Rect1(180,240,w,r,c)
        tCanvas.update()
        w *= 1.004
        Delay(0.001)
    Delay(1)
    w=280
    for r in range(45,1216,5):
        c = random.choice(Color)
        Rect2(580,240,w,r,c)
        tCanvas.update()
        w *= 0.99
        Delay(0.001)
    win.mainloop()


效果图: (单步旋转角度为逆时针5度,例一边长逐渐变长;例二边长逐渐变短)

20210331072857276.gif


目录
相关文章
|
3月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
603 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
3月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
294 0
|
2月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
289 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
2月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
352 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
4月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
299 18
|
4月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
446 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
4月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍了基于Python的剪贴板监控技术,结合clipboard-monitor库实现高效、安全的数据追踪。内容涵盖技术选型、核心功能开发、性能优化及实战应用,适用于安全审计、自动化办公等场景,助力提升数据管理效率与安全性。
207 0
|
Python
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
998 3
|
开发工具 git Python
安装和使用`libnum`是一个用于数字理论函数的Python库
【6月更文挑战第19天】`libnum`是Python的数字理论函数库。安装可通过`git clone`,进入目录后运行`python setup.py install`,也可用`pip install libnum`。示例:使用`int_to_hex`将十进制数42转换为十六进制字符串'2a'。注意,信息可能已过时,应查最新文档以确保准确性。如遇问题,参考GitHub仓库或寻求社区帮助。
370 1
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:

推荐镜像

更多