tkinter窗体中随机生成多个圆[Python]

import time
import tkinter
import random
from threading import Thread
run = True
a = tkinter.Tk()
a.geometry('1920x1060')


def m():
    for d in range(60*60*8):    # 此程序最多运行8个小时
        b = random.Random()
        c = b.randint(1, 1000)    # 随机数控制圆的数量
        yuan = tkinter.Canvas(a, width=1920, height=1060)    # 设置画布大小
        yuan.pack()
        for i in range(c):
            x1 = b.randint(1, 1920)
            y1 = b.randint(1, 1060)
            c1 = b.randint(0, 255)
            c2 = b.randint(0, 255)
            c3 = b.randint(0, 255)
            c4 = "#%02x%02x%02x" % (c1, c2, c3)    # 设置圆的颜色
            yuan.create_oval(x1, y1, x1+5, y1+5, fill=c4)    # 绘制圆
        time.sleep(3)
        yuan.destroy()


def m1():
    global run
    run = True
    yx = Thread(target=m, args=())
    yx.start()
    if not run:
        yx.join()


m1()
a.mainloop()

本文主要通过随机函数random与tkinter组件结合,在窗体上随机位置显示随机数量随机颜色的圆

c代表圆生成的数量

c4代表圆的颜色

x1,y1代表圆的坐标

其中第一层for d in range(60*60*8)控制程序运行时间

tkinter.Canvas绘制画布,因为tkiner里没有直接可用的圆形组件

yuan.create_oval,绘制圆

create_oval(x0, y0, x1, y1, options)1. 绘制一个圆形或椭圆形;
2. 参数 x0 与 y0 定义绘图区域的左上角坐标;参数 x1 与 y1 定义绘图区域的右下角坐标;
3. 参数 options 表示其他可选参数,本案例以fill为参照

画布显示3秒后进行yuan.destroy(),销毁画布并重新创建,否则本程序运行只会显示第一次随机数运行的结果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值