当前位置: 首页 > 后端技术 > Python

浪漫海龟,送给程序员自己的圣诞树!

时间:2023-03-26 17:45:16 Python

前几天一直在研究Pyqt5相关的知识。在PythonUI的世界里,Pyqt5只是其中之一,它被用来让应用程序变得更漂亮。在canvas上呈现我们需要的东西,还是靠turtle比较靠谱。任何组件都可以做一些事情,没有谁比谁更好,只要在正确的地方使用正确的组件就可以满足要求。海龟库主要是把你想要的东西以画笔的形式画在画布上。最后参考CSDN对其功能进行重写封装。你可以发挥你的想象力来做出更好的。程序员当然要活到老,学到老!参考来源:CSDN博客【阅读全文】介绍相关第三方python库,主要使用random随机数库和turtlecanvas组件库。importrandomasrdm#内置随机数生成库importturtleastle#执行canvas绘图库初始化turtle画布的相关参数,在初始化过程中调用相关的引用函数。def__init__(self):self.tle=tle#初始化海龟对象self.tle.speed('fastest')#定义全局刷速:fastself.tle.screensize(bg='black')#定义全局backgroundblackself.base_num=100.0#定义画笔的移动基数为100.0self.tle.pensize(3)#定义画笔宽度self.tle.setup(1000,750)#定义画布大小#self.tle.tracer(False)#是否直接显示结果取消画笔绘制过程self.draw_star()#调用绘制五角星self.draw_tree()#调用绘制树self.draw_bottom()#调用绘制底部灯笼self.draw_word()#调用绘制单词self.draw_snow()#调用绘制雪self.finshed()#调用完成绘制五角星作为圣诞树的顶部.defdraw_star(self):'''画一个五角星Function:return:'''self.tle.left(90)#画笔逆时针旋转90度self.tle.forward(3*self.base_num)#画笔向前画一条直线3*self.base_numself.tle.color('yellow','yellow')#定义画笔颜色为黄色,填充颜色为黄色self.tle.begin_fill()#开始填充self.tle.left(126)#画笔逆时针旋转126度forninrange(5):#循环5次self.tle.forward(self.base_num/5)#画笔画一条直线self.base_num/5向前self.tle。right(144)#画笔顺时针旋转144度self.tle.forward(self.base_num/5)#画笔画直线self.base_num/5forwardself.tle.left(72)#画笔逆时针旋转72Degreesself.tle.end_fill()#结束填充self.tle.right(126)#画笔顺时针旋转126度,然后绘制圣诞树的树干部分。defdraw_tree(self):'''Treedrawingfunction:return:'''self.tle.color('darkgreen')#设置树的画笔颜色为深绿色self.tle.backward(self.base_num*4.8)#绘制一条直线self.base_num*4.8backwardself.tree_iterator(15,self.base_num)#调用分支遍历函数self.tle.backward(self.base_num/2)#绘制一条直线self.base_num/2向后直线deftree_iterator(self,d,s):'''树枝递归函数:paramd::params::return:'''ifd<=0:returnself.tle.forward(s)#向前画一条长度为s的直线self.tree_iterator(d-1,s*0.8)#递归self.tle.right(120)#顺时针旋转120度self.tree_iterator(d-3,s*0.5)#递归自我。draw_lantern()#调用分支灯笼函数self.tle.right(120)#顺时针旋转120度self.tree_iterator(d-3,s*0.5)#递归self.tle.right(120)#顺时针旋转120度self.tle.backward(s)#向后画一条长度为s的直线最后,为了让圣诞树看起来更好看,可以在树枝上加上彩灯。defdraw_lantern(self):'''画灯笼函数,在树枝上随机添加灯笼:return:'''ifrdm.randint(10,50)==10:self.tle.color('tomato')self.tle.circle(6)elifrdm.randint(10,50)==50:self.tle.color('黄色')self.tle.circle(3)else:self.tle.color('深绿色')to在圣诞树的底部添加彩灯。defdraw_bottom(self):'''绘制底灯Function:return:'''foriinrange(200):#循环绘制200个底灯a=200-400*rdm.random()b=10-20*rdm.random()self.tle.pu()self.tle.forward(b)self.tle.left(90)self.tle.forward(a)self.tle.pd()如果rdm.randint(0,1)==0:self.tle.color('tomato')else:self.tle.color('wheat')self.tle.circle(2)self.tle.up()self.tle。backward(a)self.tle.right(90)self.tle.backward(b)在圣诞树周围画雪花。defdraw_snow(self):'''snowdrawingfunction:return:'''self.tle.ht()#enablehiddenbrushmodeforiinrange(200):self.tle.color("white")#设置画笔颜色为白色self.tle.pu()#提起画笔x_range=[-350,350]#设置X轴范围y_range=[-100,350]#设置Y轴坐标self.tle.setx(rdm.randint(x_range[0],x_range[1]))#随机设置X轴坐标self.tle.sety(rdm.randint(y_range[0],y_range[1]))#随机设置Y-轴坐标self.tle.pd()#Fallingbrushleies=6#设置6个雪花叶子leaies_size=rdm.randint(1,8)#随机生成叶子大小forninrange(leaies):self.tle.forward(int(leaies_size))#向前画一条长度为leies_size的直线self.tle.backward(int(leies_size))#向后画一条长度为leies_size的直线self.tle.right(int(360/leies))#顺时针旋转自身60度。tle.backward(b)在cavans画布上写祝福文字。defdraw_word(self):'''在画布上写文字:return:'''self.tle.color("darkred","red")self.tle.write("MerryChristmas",align="center",font=("ComicSansMS",40,"bold"))调用完成函数,即绘制完成后窗口不会消失。deffinshed(self):'''Finishedfunction:return:'''self.tle.done()【过往回顾】PyQt5GUI:百度图片下载器(文末附源码)zip(),zip(在python3中*),list()之间的灵活转换!pythonprint()函数的格式化字符串输出PyQt5GUI&&RequestsApi做一个天气查询系统(完整代码在文末获取)!一个漂亮的windowscmd命令行工具cmder如何将excel数据分析后的可视化数据写入保存!Excel数据处理2:快速完成openpyxl数据的添加和修改!Excel数据处理一:巧妙利用openpyxl提取过滤数据Helium,比Selenium更方便的自动化测试工具!Python数据可视化:可视化数据分析插件D-Tale