Python课程设计实训报告熊猫宝宝的绘制_第1页
Python课程设计实训报告熊猫宝宝的绘制_第2页
Python课程设计实训报告熊猫宝宝的绘制_第3页
Python课程设计实训报告熊猫宝宝的绘制_第4页
Python课程设计实训报告熊猫宝宝的绘制_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python语言程序课程设计(报告)《Python语言程序课程设计》(报告)题目:熊猫宝宝的绘制

摘要本文主要设计了如何利用Python实现图形用户界面设计。该设计的硬件平台是计算进。软件采用Python语言编程。实现的主要功能是绘制各种图形及实现编写各种界面,本设计的优点是使用户方便快捷的使用电脑,可以应用到界面绘制,游戏设计等领域。通过Python语言,可以看到相比其他语言,Python具有以下优点:(1)语法简单,(2)Python是开源的,(3)通用且灵活,(4)具有高度的可扩展性,(5)丰富的类库。关键词:turtle库Python语言用户界面设计目录第1章概述 第1章概述1.1课题选择Python自身强大的优势决定其不可限量的发展前景。Python作为一种通用语言,几乎可以用在任何领域和场合,角色几乎是无限的。Python具有简单、易学、免费、开源、可移植、可扩展、可嵌入、面向对象等优点,它的面向对象甚至比java和C#.net更彻底。它是一种很灵活的语言,能帮你轻松完成编程工作。强大的类库支持,使编写文件处理、正则表达式、网络连接等程序变得相当容易。能运行在多种计算机平台和操作系统中,如unix、windows、MacOS、OS/2等等,并可作为一种原型开发语言,加快大型程序的开发速度。python已经入侵到世界的各个领域,web开发,桌面软件开发,大数据,运维,爬虫,数据科学,人工智能,人们对于它的喜爱程度与日俱增,我想,根本原因在于它是一种平民语言,拉近了非计算机专业人士与计算机的距离。最后,Python在未来的发展中还有很大的潜力。随着人工智能、大数据、物联网等领域的发展,Python的应用也将越来越广泛。同时,Python的开发社区也在不断壮大,越来越多的人开始学习和使用Python。Python未来的发展将会更加多样化,包括但不限于Web开发、数据科学、物联网、自动化等方向。1.2设计目的图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,已选择命令调用文件过执行其它一些日常任务与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形界面用户界面有许多优点,图形用户界面由窗口,下拉菜单对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相拥同的操作总是以同样的方式来完成。在图形用户界面,用户看到和操作的都是图形对象,应用的式计算及图形学的技术,GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用,人们从此不再需要死记硬背大量的命令。1.3设计工具Python3.3第2章设计内容2.1题目1熊猫宝宝的绘制2.1.1设计任务及要求利用turtle库实现熊猫宝宝的绘制2.1.2程序代码importturtleastt.title("熊猫宝宝")t.shape("classic")t.pensize(3)t.color("black")t.fillcolor("black")t.speed(100)t.hideturtle()#左耳t.penup()t.goto(-105,97)t.setheading(160)t.begin_fill()t.pendown()t.circle(-30,230)t.setheading(180)t.circle(37,90)t.end_fill()#右耳t.penup()t.goto(105,97)t.setheading(20)t.begin_fill()t.pendown()t.circle(30,230)t.setheading(0)t.circle(-37,90)t.end_fill()#头部轮廓t.penup()t.goto(-67,140)t.setheading(30)t.pendown()t.circle(-134,60)t.penup()t.goto(-50,-25)t.setheading(180)t.pendown()t.circle(-100,30)t.circle(-30,90)t.setheading(100)t.circle(-200,20)t.penup()t.goto(50,-25)t.setheading(0)t.pendown()t.circle(100,30)t.circle(30,90)t.setheading(80)t.circle(200,20)

#两熊猫眼#左眼t.penup()t.goto(-90,25)t.setheading(-45)t.begin_fill()t.pendown()#椭圆绘制技巧a=0.2foriinrange(120):

if

0<=i<30or60<=i<90:

a=a+0.1

t.lt(3)

#向左转3度

t.fd(a)

#向前走a的步长

else:

a=a-0.1

t.lt(3)

t.fd(a)t.end_fill()t.fillcolor("white")t.penup()t.goto(-53,43)t.setheading(0)t.begin_fill()t.pendown()t.circle(13,360)t.end_fill()t.penup()t.pensize(4)t.goto(-60,57)t.setheading(30)t.pendown()t.circle(-12,60)#右眼t.penup()t.goto(90,25)t.setheading(45)t.pensize(2)t.fillcolor("black")t.begin_fill()t.pendown()#椭圆绘制技巧a=0.2foriinrange(120):

if

0<=i<30or60<=i<90:

a=a+0.1

t.lt(3)

#向左转3度

t.fd(a)

#向前走a的步长

else:

a=a-0.1

t.lt(3)

t.fd(a)t.end_fill()t.fillcolor("white")t.penup()t.goto(53,43)t.setheading(0)t.begin_fill()t.pendown()t.circle(13,360)t.end_fill()t.penup()t.pensize(4)t.goto(60,57)t.setheading(150)t.pendown()t.circle(12,60)#鼻子和嘴吧t.penup()t.goto(-16,20)t.setheading(-90)t.fillcolor("black")t.begin_fill()t.pendown()a=0.2foriinrange(120):

if

0<=i<30or60<=i<90:

a

=a+0.03

t.lt(3)

t.fd(a)

else:

a

=a-0.03

t.lt(3)

t.fd(a)t.end_fill()t.penup()t.goto(-24,0)t.setheading(-60)t.pendown()t.circle(28,120)#熊肢体#左肢t.penup()t.goto(-65,-24)t.setheading(-140)t.begin_fill()t.pendown()t.circle(100,40)t.setheading(180)t.circle(30,40)t.setheading(-40)t.circle(40,40)t.setheading(-150)a=0.5foriinrange(120):

if

0<=i<30or60<=i<90:

a=a+0.05

t.lt(3)

#向左转3度

t.fd(a)

#向前走a的步长

elif

30<=i<60or90<=i<100:

a=a-0.05

t.lt(3)

t.fd(a)t.setheading(93)t.circle(-150,30)t.end_fill()

t.penup()t.goto(-85,-115)t.setheading(-150)t.color("gray","gray")t.begin_fill()t.pendown()a=0.3foriinrange(120):

if

0<=i<30or60<=i<90:

a=a+0.03

t.lt(3)

#向左转3度

t.fd(a)

#向前走a的步长

else:

a=a-0.03

t.lt(3)

t.fd(a)t.end_fill()#每个脚趾绘制函数deftoe(x,y):

t.begin_fill()

t.goto(x,y)

t.circle(3,360)

t.end_fill()

t.penup()toe(-98,-120)toe(-96,-110)toe(-88,-105)toe(-80,-105)

#右肢t.color("black")t.penup()t.goto(65,-24)t.setheading(-40)t.begin_fill()t.pendown()t.circle(-100,40)t.setheading(0)t.circle(-30,40)t.setheading(-140)t.circle(-40,40)t.setheading(-30)a=0.5foriinrange(120):

if

0<=i<30or60<=i<90:

a=a+0.05

t.rt(3)

#向左转3度

t.fd(a)

#向前走a的步长

elif

30<=i<60or90<=i<100:

a=a-0.05

t.rt(3)

t.fd(a)t.setheading(87)t.circle(150,30)t.end_fill()

t.penup()t.goto(85,-115)t.setheading(150)t.color("gray","gray")t.begin_fill()t.pendown()a=0.3foriinrange(120):

if

0<=i<30or60<=i<90:

a=a+0.03

t.lt(3)

#向左转3度

t.fd(a)

#向前走a的步长

else:

a=a-0.03

t.lt(3)

t.fd(a)t.end_fill()

t.penup()toe(98,-120)toe(96,-110)toe(88,-105)toe(80,-105)

t.goto(-57,-140)t.color("black")t.setheading(-20)t.pendown()t.circle(165,40)

t.penup()t.goto(0,180)t.write("Pandasarethemostlovelyanimals",align="center"

,font

=("Times",18,"bold"))t.done()2.1.3编译调试及运行结果图2.1熊猫运行结果2.2题目2计算器的编写2.2.1设计任务及要求利用tkinter模块实现具有加减乘除功能的计算器2.2.2程序代码importtkinterastk

classCalculate(tk.Frame):

def

__init__(self,parent=None):

"""构造函数"""

tk.Frame.__init__(self,parent)

self.pack()

self.startOfNextOperand

=True

#开始输入下一个操作数

#

显示运算表达式

self.expr

=tk.StringVar()

self.expr.set('')

self.exprLabel

=tk.Label(self,font=('Helvetica',20),

fg

='#f40',width=42,anchor='w',textvariable=self.expr)

self.exprLabel.grid(row

=0,column=0,columnspan=4)

#

显示结果

self.result

=tk.StringVar()

self.result.set(0)

self.resultLabel

=

tk.Label(self,font=('Helvetica',20),

width

=42,anchor='e',textvariable=self.result)

self.resultLabel.grid(row

=1,column=0,columnspan=4)

#

计算器按钮的按钮,使用二维列表表示

buttons

=[['CE','C','←','/'],

['7',

'8','9','×'],

['4',

'5','6','-'],

['1',

'2','3','+'],

['±',

'0','.','=']]

#

创建和布局3到7行各个按钮

for

rinrange(5):

for

cinrange(4):

#

定义事件处理函数cmd(),默认参数为按钮标签buttons[r][c]

def

cmd(key=buttons[r][c]):

self.click(key)

if(r

==0orc==3):

button

=tk.Button(self,text=buttons[r][c],bg='#008c8c',fg='#fff',

width=15,

font=('Helvetica',15),command=cmd)

else:

button

=tk.Button(self,text=buttons[r][c],bg='#fff',fg='#666',

width=15,

font=('Helvetica',15),command=cmd)

button.grid(row

=r+2,column=c)

def

click(self,key):

"""事件处理"""

if

key=='=':

#按等号键时,求值,并显示结果

result

=eval(self.expr.get()+self.result.get())

self.result.set(result)

self.expr.set('')

self.startOfNextOperand

=True

elif

keyin'+-/×':

if

key=='×':key='*'

resultExpr

=self.expr.get()+self.result.get()+key

self.expr.set(resultExpr)

self.result.set(0)

self.startOfNextOperand

=True

elif

key=='C':

#全部清空,回到初始状态

self.expr.set('')

self.result.set(0)

elif

key=='CE':

#清空当前输入

self.result.set(0)

elif

key=='←':

oldnum

=self.result.get()

if

len(oldnum)==1:#只有一个字符

newnum=0

else:

newnum

=oldnum[:-1]

self.result.set(newnum)

elif

key=='±':

#正负号,切换正负号

oldnum

=self.result.get()

#获取原来的值

if

oldnum[0]=='-':

newnum

=oldnum[1:]

else:

newnum

='-'+oldnum

self.result.set(newnum)

else:

#按数字或者小数点键

if

self.startOfNextOperand:

self.result.set(0)

self.startOfNextOperand

=False

oldnum

=self.result.get()

#获取原来的值

if

oldnum=='0':

self.result.set(key)

else:

newnum

=oldnum+key

self.result.set(newnum)

if__name__=='__main__':

root

=tk.Tk()

root.title('简易计算器')

calculate

=Calculate(root)root.mainloop()2.2.3编程调试及运行结果图2.2.1计算器界面图2.2.2计算其运行结果2.3题目3五环的绘制2.3.1设计任务及要求利用turtle库实现奥运五环的绘制2.3.2程序代码importturtleturtle.showturtle()turtle.width(10)turtle.color("black")turtle.circle(50)turtle.penup()turtle.goto(110,0)turtle.color("red")turtle.pendown()turtle.circle(50)turtle.penup()turtle.goto(-110,0)turtle.color("blue")turtle.pendown()turtle.circle(50)turtle.penup()turtle.goto(-55,-60)turtle.color("yellow")turtle.pendown()turtle.circle(50)turtle.penup()turtle.goto(55,-60)turtle.color("green")turtle.pendown()turtle.circle(50)turtle.done()2.3.3编程调试及运行结果图2.3奥运五环运行结果第3章总结其实上面的代码中还有很多值得改进的地方,比如刷新窗口以及让球移动起来的代码并不应该放在事件循环中,等学习了多线程的知识后,用一个后台线程来处理这些事可能是更好的选择。如果希望获得更好的用户体验,我们还可以在游戏中加入背景音乐以及在球与球发生碰撞时播放音效,利用pygame的mixer和music模块,我们可以很容易的做到这一点,大家可以自行了解这方面的知识。事实上,想了解更多的关于pygame的知识,最好的教程是pygame的官方网站,如果英语没毛病就可以赶紧去看看啦。如果想开发3D游戏,pygame就显得力不从心了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论