Python tkinter库之Canvas 以圆模拟画圆环

tkinter.Canvas.create_xxx()没有直接定义画圆的函数,可以用等轴的椭圆或360度的弧形代替。本例中用画椭圆函数创建一个以圆心坐标x,y和半径r为自变量的画圆函数 Circle(x,y,r,color) ;用它模仿画圆环,叠加很多圆,它们的圆心都在另一圆周上,定圆和动圆的半径以及动圆的稀密程序随机变化:

import tkinter as tk
import pyautogui as ag
from random import *
from time import sleep as Delay
from math import sin
from math import cos
from math import pi
from numpy import arange as np

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 Circle(x,y,r,c='black'):
    coord=x-r,y-r,x+r,y+r
    tCanvas.create_oval(coord,outline=c)

rand = lambda a,b:(random()*(a+1))+b

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")
    c_txt=tCanvas.create_text((225, 240),text='',anchor=tk.W, font=("宋体",20))
    Color = ['red','blue','green','magenta','navy','lawngreen','orange']
    I=20
    for i in range(1,I+1):
        R=rand(60,80)
        r=rand(30,50)
        step = rand(1,15)*pi/1080
        for t in np(-pi,pi,step):
            x = 240+R*cos(t)
            y = 220+R*sin(t)
            c = choice(Color)
            Circle(x,y,r,c)
        tCanvas.update()
        Delay(0.5)
        if i!=I:tCanvas.delete("all")

    tCanvas.create_text((225, 450),text='End!',anchor=tk.W, font=("宋体",20))
    win.mainloop()

效果图: 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hann Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值