python +tkinter绘制彩虹和云朵

python +tkinter绘制彩虹和云朵

彩虹,简称虹,是气象中的一种光学现象,当太阳光照射到半空中的水滴,光线被折射及反射,在天空上形成拱形的七彩光谱,由外圈至内圈呈红、橙、黄、绿、蓝、靛、紫七种颜色。事实上彩虹有无数种颜色,比如,在红色和橙色之间还有许多种细微差别的颜色,但为了简便起见,所以只用七种颜色作为区别。

先给出运行效果:

源码如下:

import tkinter as tk# 创建主窗口
root = tk.Tk()
root.title("彩虹")
root.geometry("400x300")# 创建画布
canvas = tk.Canvas(root, width=400, height=300, bg="#87CEEB")  # 天蓝色背景
canvas.pack()# 绘制彩虹
def draw_rainbow():center_x = 200  # 画布中心 Xcenter_y = 320  # 调整 Y 值使彩虹靠下radius = 240    # 彩虹半径# 彩虹颜色colors = ['#FF0000',  # 红'#FF7F00',  # 橙'#FFFF00',  # 黄'#00FF00',  # 绿'#0000FF',  # 蓝'#4B0082',  # 靛'#9400D3'   # 紫]# 绘制彩虹弧线for i in range(len(colors)):canvas.create_arc(center_x - (radius - i * 20), center_y - (radius - i * 20),center_x + (radius - i * 20), center_y + (radius - i * 20),start=0, extent=180, outline=colors[i], width=20, style=tk.ARC)#绘制云朵
def draw_cloud(x, y, size):canvas.create_oval(x, y, x + size *2, y + size, fill="white", outline="white")canvas.create_oval(x + size //2, y - size //2, x + size *2.5, y + size //2, fill="white", outline="white")#绘制彩虹
draw_rainbow()#绘制云朵
draw_cloud(50,  50,  30)       #左侧云朵
draw_cloud(250,  80,  25)      #右侧云朵#运行主循环
root.mainloop()

下免修改云彩代码,让云彩从左向右不停地移动,先给出运行效果:

源码如下:

import tkinter as tk# 创建主窗口
root = tk.Tk()
root.title("彩虹")
root.geometry("400x300")# 创建画布
canvas = tk.Canvas(root, width=400, height=300, bg="#87CEEB")  # 天蓝色背景
canvas.pack()# 绘制彩虹
def draw_rainbow():center_x = 200  # 画布中心 Xcenter_y = 320  # 调整 Y 值使彩虹靠下radius = 240    # 彩虹半径# 彩虹颜色colors = ['#FF0000',  # 红'#FF7F00',  # 橙'#FFFF00',  # 黄'#00FF00',  # 绿'#0000FF',  # 蓝'#4B0082',  # 靛'#9400D3'   # 紫]# 绘制彩虹弧线for i in range(len(colors)):canvas.create_arc(center_x - (radius - i *20), center_y - (radius - i *20),center_x + (radius - i *20), center_y + (radius - i *20),start=0, extent=180, outline=colors[i], width=20, style=tk.ARC)#绘制云朵
def draw_cloud(x, y, size):cloud_part1 = canvas.create_oval(x, y, x + size *2, y + size, fill="white", outline="white")cloud_part2 = canvas.create_oval(x + size //2, y - size //2, x + size *2.5, y + size //2, fill="white", outline="white")return [cloud_part1, cloud_part2]   #返回两个椭圆的ID列表#云朵移动函数
def move_cloud(cloud_parts, speed):for part in cloud_parts:   #遍历云朵的每个部分coords = canvas.coords(part)#如果云朵移出画布右侧边界,则将其重新放置到左侧if coords[2] >400 + 50:  canvas.move(part,-450,0)  #移动云朵的当前部分canvas.move(part,speed,0)#每隔50毫秒调用一次move_cloud函数,形成动画效果root.after(50,move_cloud,cloud_parts,speed)#绘制彩虹
draw_rainbow()#绘制云朵并获取其ID列表(用于移动)
cloud1 = draw_cloud(50,50,30)       #左侧云朵
cloud2 = draw_cloud(250,80,25)      #右侧云朵#启动云朵移动动画(速度为3)
move_cloud(cloud1,3)  
move_cloud(cloud2,3)  #运行主循环
root.mainloop()

OK!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stable diffusion安装mov2mov

第一步: 下载mov2mov,地址:https://gitcode.com/gh_mirrors/sd/sd-webui-mov2mov 下载包到web-ui的sd-webui-aki-v4.10\extensions文件夹面解压 第二步:在文件夹中调出cmd窗口,执行下列命令, git restore…

SpringSpringBoot常用注解总结

目录 1. SpringBootApplication 2. Spring Bean 相关 2.1. Autowired 2.2. Component,Repository,Service, Controller 2.3. RestController 2.4. Scope 2.5. Configuration 3. 处理常见的 HTTP 请求类型 3.1. GET 请求 3.2. POST 请求 3.3. PUT 请求 3.4. DELETE 请…

STM32 软件I2C读写

单片机学习! 目录 前言 一、软件I2C读写代码框架 二、I2C初始化 三、六个时序基本单元 3.1 引脚操作的封装和改名 3.2 起始条件执行逻辑 3.3 终止条件执行逻辑 3.4 发送一个字节 3.5 接收一个字节 3.5 发送应答&接收应答 3.5.1 发送应答 3.5.2 接…

七种改进爬山算法的方法

一、爬山算法 爬山算法(Hill Climbing Algorithm)是一种启发式的基于局部最优解的搜索算法,用于在给定的搜索空间中寻找全局最优解或足够好的解。它属于局部搜索算法,通常用于解决优化问题,包括连续和离散问题。 爬山算法模拟了爬山的过程,从某个随机起始点开始,不断向更…

MYSQL--------MYSQL中的运算符

以下是 MySQL 中各种运算符的介绍及代码示例: 算术运算符 算术运算符用于执行基本的数学运算,包括加、减、乘、除、取模(取余)。 -- 创建一个名为 operator_demo 的表 CREATE TABLE operator_demo (a INT,b INT );-- 插入示例数…

MySQL图形化界面工具--DataGrip

之前介绍了在命令行进行操作,但是不够直观,本次介绍图形化界面工具–DataGrip。 安装DataGrip 官网链接:官网下载链接 常规的软件安装流程。 参考链接:DataGrip安装 使用DataGrip 添加数据源: 第一次使用最下面会…

【虚拟机】VMware 16图文安装和配置 AlmaLinux OS 9.5 教程

准备工作 下载AlmaLinux ISO文件:从AlmaLinux官方网站(https://almalinux.org/)下载最新版本的ISO文件。 安装VMware Workstation:确保您的计算机上已安装VMware Workstation。(注:我这边使用的是VMware16…

中国联通首次推出一套量化大模型的新标准

新基准的诞生 中国联通的研究团队近日公布了一套创新性的量化标准,主要针对大型语言模型的能力评估。这一基准的灵感来源于动物智能演化的规律,为用户在选择语言模型时提供了科学依据。现代社会中,各种语言模型如雨后春笋般涌现,…

aardio —— 虚表 —— 使用ownerDrawCustom列类型制作喜马拉雅播放器列表

不会自绘也能做漂亮列表,你相信吗? 看看这个例子,虚表_vlistEx_ColType_OwnerDrawCustom列类型,移植自godking.customPlus,简单好用,做漂亮列表的大杀器,玩aardio必备利器! 请更新…

网安数学基础期末复习

目录 整除同余同余方程群和环 整除 a的显然因数/平凡因数1,a整除的传递性和组合性 若 a ∣ b , b ∣ a a|b,b|a a∣b,b∣a 则 a b a\pm b ab欧几里得带余除法 公因数和最大公因数在整除里的定义,最大公因数为1则两数互质,注意公因数有正…

【论文阅读笔记】SCI算法与代码 | 低照度图像增强 | 2022.4.21

目录 一 SCI 1 SCI网络结构 核心代码(model.py) 2 SCI损失函数 核心代码(loss.py) 3 实验 二 SCI效果 1 下载代码 2 运行 一 SCI 💜论文题目:Toward Fast, Flexible, and Robust Low-Light Image …

AcWing练习题:平均数2

读取三个浮点数 A,B 和 C 的值,对应于三个学生的成绩。 请你计算学生的平均分,其中 A 的成绩的权重为 2,B 的成绩的权重为 3,C 的成绩的权值为 5。 成绩的取值范围在 0 到 10 之间,且均保留一位小数。 输…

aardio —— 改变按钮文本颜色

import win.ui; /*DSG{{*/ var winform win.form(text"改变按钮颜色示例";right279;bottom239;composited1) winform.add( button{cls"button";text"点这里1";left16;top104;right261;bottom159;fontLOGFONT(h-14);z1}; button2{cls"butto…

Scratch教学作品 | 白水急流——急流勇进,挑战反应极限! ‍♂️

今天为大家推荐一款刺激又好玩的Scratch冒险作品——《白水急流》!由AgentFransidium制作,这款作品将带你体验惊险的急流救援任务,帮助那位“睡着的疯狂人”安全穿越湍急水域!想要挑战自己的反应极限?快来试试吧&#…

Android测试ABD环境及语句

1、什么是adb ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。 ADB 也是 Android SDK 中的一个工具,可以直接操作管理 Android 模拟器或者真…

库伦值自动化功耗测试工具

1. 功能介绍 PlatformPower工具可以自动化测试不同场景的功耗电流,并可导出为excel文件便于测试结果分析查看。测试同时便于后续根据需求拓展其他自动化测试用例。 主要原理:基于文件节点 coulomb_count 实现,计算公式:电流&…

creating-custom-commands-in-flask

在烧瓶中创建自定义命令 原文:https://www . geesforgeks . org/creating-custom-commands-in-flask/ 本文围绕如何在 flask 中创建自定义命令展开。每次使用烧瓶运行运行烧瓶时,运行实际上是一个命令,在烧瓶配置文件中启动一个名为运行的函数。同样&…

机器学习基础-机器学习的常用学习方法

半监督学习的概念 少量有标签样本和大量有标签样本进行学习;这种方法旨在利用未标注数据中的结构信息来提高模型性能,尤其是在标注数据获取成本高昂或困难的情况下。 规则学习的概念 基本概念 机器学习里的规则 若......则...... 解释:如果…

python使用AprilTag 3

python使用AprilTag 3 最近想测试一下AprilTag精度,看看能不能用的上。 1 安装 法1:github源码编译安装(放弃) 一开始找到了AprilTag 3的官方github网址https://github.com/AprilRobotics/apriltag,但是按着操作下…

小程序学习07—— uniapp组件通信props和$emit和插槽语法

目录 一 父组件向子组件传递消息 1.1 props (a)传递静态或动态的 Prop (b)单向数据流 二 子组件通知父组件 2.1 $emit (a)定义自定义事件 (b)绑定自定义事件 三 插槽语法…