python +t kinter繪制彩虹和云朵

python +t kinter繪制彩虹和云朵

彩虹,簡稱虹,是氣象中的一種光學現象,當太陽光照射到半空中的水滴,光線被折射及反射,在天空上形成拱形的七彩光譜,由外圈至內圈呈紅、橙、黃、綠、藍、靛、紫七種顏色。事實上彩虹有無數種顏色,比如,在紅色和橙色之間還有許多種細微差別的顏色,但為了簡便起見,所以只用七種顏色作為區別。

先給出運行效果:

源碼如下:

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.pswp.cn/web/64914.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64914.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64914.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zabbix5.0版本(監控Nginx+PHP服務狀態信息)

目錄 1.監控Nginx服務狀態信息 (1)通過Nginx監控模塊,監控Nginx的7種狀態 (2)開啟Nginx狀態模塊 (3)配置監控項 (4)創建模板 (5)用默認鍵值…

Python入門教程 —— 字符串

字符串介紹 字符串可以理解為一段普通的文本內容,在python里,使用引號來表示一個字符串,不同的引號表示的效果會有區別。 字符串表示方式 a = "Im Tom" # 一對雙引號 b = Tom said:"I am Tom" # 一對單引號c = Tom said:"I\m Tom" # 轉義…

AcWing練習題:差

讀取四個整數 A,B,C,D,并計算 (AB?CD)的值。 輸入格式 輸入共四行,第一行包含整數 A,第二行包含整數 B,第三行包含整數 C,第四行包含整數 D。 輸出格式 輸出格式為 DIFERENCA X,其中 X 為 (AB?CD) 的…

小程序添加購物車業務邏輯

數據庫設計 DTO設計 實現步驟 1 判斷當前加入購物車中的的商品是否已經存在了 2 如果已經存在 只需要將數量加一 3 如果不存在 插入一條購物車數據 4 判斷加到本次購物車的是菜品還是套餐 Impl代碼實現 Service public class ShoppingCartServiceImpl implements Shoppin…

如何在谷歌瀏覽器中使用自定義搜索快捷方式

在數字時代,瀏覽器已經成為我們日常生活中不可或缺的一部分。作為最常用的瀏覽器之一,谷歌瀏覽器憑借其簡潔的界面和強大的功能深受用戶喜愛。本文將詳細介紹如何自定義谷歌瀏覽器的快捷工具欄,幫助你更高效地使用這一工具。 一、如何找到谷歌…

Python 3 與 Python 2 的主要區別

文章目錄 1. 語法與關鍵字print 函數整數除法 2. 字符串處理默認字符串類型字符串格式化 3. 輸入函數4. 迭代器和生成器range 函數map, filter, zip 5. 標準庫變化urllib 模塊configparser 模塊 6. 異常處理7. 移除的功能8. 其他重要改進數據庫操作多線程與并發類型注解 9. 總結…

關于IDE的相關知識之二【插件推薦】

成長路上不孤單😊😊😊😊😊😊 【14后😊///計算機愛好者😊///持續分享所學😊///如有需要歡迎收藏轉發///😊】 今日分享關于ide插件推薦的相關內容&#xff01…

如何獲取穩定高效的動態代理?

在數據采集的領域,動態代理IP是我們探索網絡世界的小助手,它不僅幫助我們高效地收集信息,還能在保護數據安全方面發揮重要作用。但如何在眾多選擇中找到最適合的那個——即穩定且高效的動態代理也是一大難題。 明確你的需求 首先&#xff0…

基于微信小程序的校園點餐平臺的設計與實現(源碼+SQL+LW+部署講解)

文章目錄 摘 要1. 第1章 選題背景及研究意義1.1 選題背景1.2 研究意義1.3 論文結構安排 2. 第2章 相關開發技術2.1 前端技術2.2 后端技術2.3 數據庫技術 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系統需求分析 4. 第4章 系統概要設計4.1 系統功能模塊設計4.2 數據庫設計 5.…

原生js封裝ajax請求以及css實現提示效果和禁止點擊效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0,user-scalableno"><title>本地模式網絡切換</title>&l…

Pytorch的自動求導模塊

文章目錄 torch.autograd.backward()基本用法非標量張量的反向傳播保留計算圖指定輸入張量高階梯度計算 與 y.backward() 的區別torch.autograd.grad()基本用法非標量張量的梯度高階梯度計算多輸入、多輸出的梯度計算未使用的輸入張量保留計算圖 與 backward() 的區別 torch.au…

Mac OS

本文來自智譜清言 ------ Mac OS&#xff08;現稱為macOS&#xff09;是蘋果公司開發和銷售的操作系統&#xff0c;自1984年推出以來&#xff0c;它已經經歷了多次重大的演變和發展。 起源&#xff1a;Mac OS 1.0的誕生 - 1984年&#xff0c;蘋果發布了Macintosh計算機&#…

spring中使用@Validated,什么是JSR 303數據校驗,spring boot中怎么使用數據校驗

文章目錄 一、JSR 303后臺數據校驗1.1 什么是 JSR303&#xff1f;1.2 為什么使用 JSR 303&#xff1f; 二、Spring Boot 中使用數據校驗2.1 基本注解校驗2.1.1 使用步驟2.1.2 舉例Valid注解全局統一異常處理 2.2 分組校驗2.2.1 使用步驟2.2.2 舉例Validated注解Validated和Vali…

ubuntu常用快捷鍵和變量記錄

alias b‘cd …/’ alias bb‘cd …/…/’ alias bbb‘cd …/…/…/’ alias bbbb‘cd …/…/…/…/’ alias bbbbb‘cd …/…/…/…/…/’ alias bbbbbb‘cd …/…/…/…/…/…/’ alias apkinfo‘aapt dump badging’ alias npp‘notepad-plus-plus’ export ANDROID_HOME/h…

AWS S3文件存儲工具類

pom依賴 <!--aws-s3--> <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.95</version></dependency>S3Utils import cn.hutool.core.util.ZipUtil; import com.a…

【SOC 芯片設計 DFT 學習專欄 -- 測試向量生成 ATPG (Automatic Test Pattern Generation) 】

文章目錄 OverviewATPG 的基本功能ATPG 的工作流程ATPG 應用場景示例示例 1&#xff1a;檢測單個信號的 Stuck-at Fault示例 2&#xff1a;針對 Transition Fault 的 ATPG ATPG 工具與常用工具鏈ATPG 優化與挑戰 Overview 本文主要介紹 DFT scan 中的 ATPG 功能。在 DFT (Desi…

2024 高通邊緣智能創新應用大賽智能邊緣計算賽道冠軍方案解讀

2024 高通邊緣智能創新應用大賽聚焦不同細分領域的邊緣智能創新應用落地&#xff0c;共設立三大熱門領域賽道——工業智能質檢賽道、智能邊緣計算賽道和智能機器人賽道。本文為智能邊緣計算賽道冠軍項目《端側大模型智能翻譯機》的開發思路與成果分享。 賽題要求 聚焦邊緣智能…

【Python運維】用Python和Ansible實現高效的自動化服務器配置管理

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著云計算和大規模數據中心的興起,自動化配置管理已經成為現代IT運維中不可或缺的一部分。通過自動化,企業可以大幅提高效率,降低人為錯…

微信小程序獲取后端數據

在小程序中獲取后端接口數據 通常可以使用 wx.request 方法&#xff0c;以下是一個基本示例&#xff1a; // pages/index/index.js Page({data: {// 用于存儲后端返回的數據resultData: [] },onLoad() {this.fetchData();},fetchData() {wx.request({url: https://your-backe…

應用架構模式-總體思路

采用引導式設計方法&#xff1a;以企業級架構為指導&#xff0c;形成較為齊全的規范指引。在實踐中總結重要設計形成決策要點&#xff0c;一個決策要點對應一個設計模式。自底向上總結采用該設計模式的必備條件&#xff0c;將之轉化通過簡單需求分析就能得到的業務特點&#xf…