tkinter旋转多边形示例

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

"""
   tkinter旋转多边形示例,tkinter rotate polygon example
   本程序会画一个蓝色正方形,然后按住鼠标去旋转它。
"""
import math
from tkinter import *

canvas = Canvas(width=200, height=200)         # 新建画布
canvas.pack()

# 坐标点
xy = [(50,50),(150,50),(150, 150),(50,150)]
item = canvas.create_polygon(xy,fill='blue')

center = 100, 100

def getangle(event):
    dx = canvas.canvasx(event.x) - center[0]
    dy = canvas.canvasy(event.y) - center[1]
    try:
        return complex(dx, dy)/abs(complex(dx, dy))
    except ZeroDivisionError:
        return 0.0 

def press(event):
    """单击左键绑定的函数"""
    global start
    start = getangle(event)

def motion(event):    
    """计算相对于初始角的角度"""
    global start
    angle = getangle(event) / start
    offset = complex(center[0], center[1])
    newxy = []
    for x, y in xy:
        v = angle * (complex(x, y) - offset) + offset
        newxy.append(v.real)
        newxy.append(v.imag)
    canvas.coords(item, *newxy)          # 重新配置坐标

canvas.bind("", press)         # 绑定鼠标左键单击事件
canvas.bind("", motion)       # 绑定鼠标左键移动事件 

mainloop()

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

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

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