【Python】利用Python+thinker实现旋转转盘

需求/目的:用Python+thinker实现转盘,并且能够随机旋转任意角度。

转盘形式:

主界面:

from tkinter import *win=Tk()
win.title("大转盘")
win.geometry("300x400")win.mainloop()

转盘绘制:

这里选择有10个选项,分别有不同的角度占比:

#画布:
canvas=Canvas(win,width=300,height=300,relief='solid')
#设置每个选项的角度:
extent_list=[15,90,30,15,30,60,15,90,15]
start_list=[]
ex = 0
for i in range(len(extent_list)):start_list.append(ex)ex=ex+extent_list[i]
#每个选项的颜色
color_list=['blue','orange','white','gray','green','pink','black','yellow','red']
#每个扇形的绘制:
shan_1=canvas.create_arc(30,30,270,270,extent=extent_list[0],start=start_list[0],fill='blue',style=PIESLICE)
shan_2=canvas.create_arc(30,30,270,270,extent=extent_list[1],start=start_list[1],fill='orange',style=PIESLICE)
shan_3=canvas.create_arc(30,30,270,270,extent=extent_list[2],start=start_list[2],fill='white',style=PIESLICE)
shan_4=canvas.create_arc(30,30,270,270,extent=extent_list[3],start=start_list[3],fill='gray',style=PIESLICE)
shan_5=canvas.create_arc(30,30,270,270,extent=extent_list[4],start=start_list[4],fill='green',style=PIESLICE)
shan_6=canvas.create_arc(30,30,270,270,extent=extent_list[5],start=start_list[5],fill='pink',style=PIESLICE)
shan_7=canvas.create_arc(30,30,270,270,extent=extent_list[6],start=start_list[6],fill='black',style=PIESLICE)
shan_8=canvas.create_arc(30,30,270,270,extent=extent_list[7],start=start_list[7],fill='yellow',style=PIESLICE)
shan_9=canvas.create_arc(30,30,270,270,extent=extent_list[8],start=start_list[8],fill='red',style=PIESLICE)
canvas.grid(row=1,column=0)

为了指明是哪个选项被选择到,绘制一个小箭头:

jiantou=canvas.create_polygon(145,16,155,16,150,28,fill='red')

开始旋转的按钮设置:

button_choose=Button(win,text="选择",command=rotate_arc)
button_choose.grid(row=2,column=0)

编写旋转的方法:

这里的实现思路是利用canvas的删除+绘制,再加上create_arc方法的start参数。

先随机一个时间,为了保证几率平均,随机数的取值上下范围都是0.36的整倍数,然后每隔0.001秒,重新绘制,角度增加10度。(这里的0.001和10 都可以自己调整设置)

def rotate_arc():fast_time=round(random.uniform(1.44,2.88),2)begin_start=0for i in range(int(fast_time*100)):time.sleep(0.001)canvas.delete(ALL)jiantou = canvas.create_polygon(145, 16, 155, 16, 150, 28, fill='red')shan_1 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[0], start=start_list[0]-i*5, fill='blue', style=PIESLICE)shan_2 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[1], start=start_list[1]-i*5, fill='orange', style=PIESLICE)shan_3 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[2], start=start_list[2]-i*5, fill='white', style=PIESLICE)shan_4 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[3], start=start_list[3]-i*5, fill='gray', style=PIESLICE)shan_5 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[4], start=start_list[4]-i*5, fill='green', style=PIESLICE)shan_6 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[5], start=start_list[5]-i*5, fill='pink', style=PIESLICE)shan_7 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[6], start=start_list[6]-i*5, fill='black', style=PIESLICE)shan_8 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[7], start=start_list[7]-i*5, fill='yellow', style=PIESLICE)shan_9 = canvas.create_arc(30, 30, 270, 270, extent=extent_list[8], start=start_list[8]-i*5, fill='red', style=PIESLICE)begin_start=i*5win.update()begin_start = begin_start + 95while begin_start > 360:begin_start = begin_start - 360for it in range(9):if start_list[it]<begin_start:chosen=color_list[it]

实现结果:

之后,就可以根据这个执行结果,继续配置其他功能。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

USMART调试组件学习

USMART调试组件学习日记 写于2024/9/24日晚 文章目录 USMART调试组件学习日记1. 简介2. 调试组件组成3.程序流程图4. 移植解析5. 实验效果5. 实验效果 1. 简介 USMART 是由正点原子开发的一个灵巧的串口调试互交组件&#xff0c;通过它你可以通过串口助手调用程序里面的任何函…

SigLIP技术小结

paperhttps://arxiv.org/abs/2303.15343githubhttps://github.com/google-research/big_vision个人博客位置http://myhz0606.com/article/siglip 1 背景 CLIP[1]自提出以来在zero-shot分类、跨模态搜索、多模态对齐等多个领域得到广泛应用。得益于其令人惊叹的能力&#xff0…

备考中考的制胜法宝 —— 全国历年中考真题试卷大全

在中考这场重要的战役中&#xff0c;每一分都至关重要。为了帮助广大考生更好地备考&#xff0c;我们精心整理了这份全国历年中考真题试卷大全&#xff0c;旨在为大家提供最全面、最权威的备考资料。 文章目录 1. 全科覆盖&#xff0c;无遗漏2. 历年真题&#xff0c;权威可靠3.…

数据结构——“AVL树”的四种数据旋转的方法

因为上次普通的二叉搜索树在极端情况下极容易造成我们的链式结构&#xff08;这会导致我们查询的时间复杂度变为O(n)&#xff09;&#xff0c;然而AVL树就很好的解决了这一问题&#xff08;归功于四种旋转的方法&#xff09;&#xff0c;它让我们的树的查询的时间复杂度变得接近…

QT--基础

将默认提供的程序都注释上意义 0101.pro QT core gui #QT表示要引入的类库 core&#xff1a;核心库 gui&#xff1a;图形化界面库 #如果要使用其他库类中的相关函数&#xff0c;则需要加对应的库类后&#xff0c;才能使用 greaterThan(QT_MAJOR_VERSION, 4): QT wid…

关于frp Web界面-----frp Server Dashboard 和 frp Client Admin UI

Web 界面 官方文档&#xff1a;https://gofrp.org/zh-cn/docs/features/common/ui/ 目前 frpc 和 frps 分别内置了相应的 Web 界面方便用户使用。 客户端 Admin UI 服务端 Dashboard 服务端 Dashboard 服务端 Dashboard 使用户可以通过浏览器查看 frp 的状态以及代理统计信…

GD32片内flash读写数据

如有技术问题及技术需求请加作者微信! GD32片内Flash的读写数据是微控制器编程中的常见任务,主要用于存储程序代码、配置参数或用户数据等。以下将详细介绍GD32片内Flash的读写数据方法和程序。 一、GD32 Flash的基本特性 存储空间划分:GD32的Flash存储空间通常分为主存储块…

罕见 P0 故障!上交所崩了 ~

大家好啊&#xff0c;我是董董灿。 昨天&#xff08;9月27号&#xff09;很多朋友可能都刷到一个消息&#xff1a;上交所崩了。 原因是在近期经济政策的刺激下&#xff0c;我大A股市场出现反弹&#xff0c;很多投资者纷纷涌入大A进行交易。 A 股反弹本来是件好事&#xff0c…

常见网络服务搭建之SSH服务搭建

SSH为Secure Shell的缩写&#xff0c;由IETF的网络小组&#xff08;Network Working Group&#xff09;所制定的建立在应用层基础上的安全协议。SSH是较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议&#xff0c;利用SSH协议可以有效防止远程管理过程中的信…

计算机毕业设计 招生宣传管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

代码随想录算法训练营第十七天|654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

654.最大二叉树 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构建最大二…

番外篇 | 复现AC-YOLOv5,进行自动化织物缺陷检测

前言:Hello大家好,我是小哥谈。我们提出了一种基于AC-YOLOv5的新型纺织缺陷检测方法。将空洞空间金字塔池化(ASPP)模块引入YOLOv5主干网络中,提出了squeeze-and-excitation(CSE)通道注意力模块,并将其引入到YOLOv5主干网络中。🌈 目录 🚀1.基础概念 🚀2.添…

Chrome浏览器如何修改语言(修改成英文、中文)

一、背景 有的时候需要修改chrome浏览器的语言&#xff0c;比如如下是中文&#xff0c;我要修改成英文 二、下面的方法已经无效了 在语言里添加"英语"并且置顶&#xff0c;试了很久&#xff0c;设置完后重启浏览器什么的&#xff0c;都无法改成英文。 这个可能…

ECMAScript 与 JavaScript 的区别详解

ECMAScript 与 JavaScript 的区别详解 在前端开发的学习过程中&#xff0c;很多开发者会遇到两个常见的术语&#xff1a;ECMAScript 和 JavaScript。这两个术语常常被混淆&#xff0c;因为它们密切相关&#xff0c;甚至有时被认为是同一件事。本文将详细解析 ECMAScript 和 Ja…

青动CRM V3.2.1

全面解决企业销售团队的全流程客户服务难题旨在助力企业销售全流程精细化、数字化管理&#xff0c;全面解决企业销售团队的全流程客户服务难题&#xff0c;帮助企业有效盘活客户资源、量化销售行为&#xff0c;合理配置资源、建立科学销售体系&#xff0c;提升销售业绩。标准授…

【面试题】软件测试实习(含答案)

软件测试实习常见面试题&#xff0c;主要是功能测试相关的基础问题 目录 一、软件测试基础 1、介绍一下你最近的项目&#xff0c;以及工作职责 2、软件项目的测试流程? 3、黑盒测试与白盒测试的区别? 4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法 1&…

言语理解(2)

B B出现在文章中的第一句话&#xff0c;属于转折前的内容非重点 在这一过程中&#xff0c;属于对前面的指代&#xff0c;后面可以引出文章中的中心内容 A D没有提及到农村&#xff0c;C选项和文段中的最后一句话是相契合的 B 色彩是文章中的主题词&#xff0c;不过属于转折&…

SpringBoot搭建

第一种创建方式 第二种创建方式 第三种创建 第四种手动创建 最后把controller写好

解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多,请稍后片刻再重试,或与系统管理员或技术支持联系“问题

根本原因就是当前主机被通过远程桌面输入了过多的错误密码&#xff0c;被系统锁定。这种情况多数是你的服务器远程桌面被人试图攻击了&#xff0c;不建议取消系统锁定策略。如果阿里云或者腾讯云主机&#xff0c;只需要在管理后台通过管理终端或者VNC登陆一次&#xff0c;锁定即…

RTA-OS Port Guide学习(三)-基于S32K324 OS

文章目录 前言HardwareSupported DevicesRegister UsageInitializationModificationRequired OS resourcesInterruptsInterrupt Priority LevelsAllocation of ISRs to Interrupt VectorsVector TableWriting Category 1 Interrupt HandlersWriting Category 2 Interrupt Handl…