神刀安全网

编程入门06:Python海龟绘图

上一篇:编程入门05:Python流程控制

现在让我们开始尝试“图形用户界面”(GUI)程序的编写——Python标准库中有个turtle模块,可以生成标准的应用程序窗口进行图形绘制。turtle的绘图方式非常简单直观——想象有一只尾巴上蘸着颜料的小海龟在电脑屏幕上爬行,随着它的移动就能画出线条来,turtle程序窗口的绘图区域使用直角坐标系,海龟的初始位置在窗口绘图区正中的(0,0)点,头朝x轴的正方向。你可以先在交互模式中引入模块并练习其中的函数:

In [1]: import turtle as tt  In [2]: tt.setup()  # 设置画布,这将立即显示绘图窗口  In [3]: tt.forward(100)  # 前进100像素,这将画出一条横向线段  In [4]: tt.right(90)  # 右转90度,这将改变海龟的朝向  In [5]: tt.forward(100)  # 这将画出一条纵向线段  In [6]: tt.goto(0,0)  # 前往原点,这将完成一个等腰直角三角形  In [7]: tt.bye()  # 关闭绘图窗口 

利用tutle模块能够更生动地学习流程控制概念,以下程序可以画出一个五角星——画一条线段并右转144度,如此重复五次:

import turtle as tt tt.TurtleScreen._RUNNING = True  # 启动绘图,在IDE中运行加这句可避免报错 cnt = 0 while cnt < 5:     tt.forward(200)     tt.right(144)     cnt += 1 tt.done()  # 结束绘图,这将不会关闭窗口 

以下程序连续画了500条线段,每一条线段的颜色都随机,每一条线段都比前一条长1个像素,每画一条线段之后都向右转91度——于是我们得到了一个繁复的彩色螺旋图案:

import turtle as tt from random import randint tt.TurtleScreen._RUNNING = True tt.speed(0)  # 绘图速度为最快 tt.bgcolor("black")  # 背景色为黑色 cnt = 0 tt.setpos(-25, 25)  # 改变初始位置,这可以让图案居中 tt.colormode(255)  # 颜色模式为真彩色 while cnt < 500:     r = randint(0, 255)     g = randint(0, 255)     b = randint(0, 255)     tt.pencolor(r, g, b)  # 画笔颜色每次随机     tt.forward(50 + cnt)     tt.right(91)     cnt += 1 tt.done() 
编程入门06:Python海龟绘图

06_turtle.png

接下来让我们灵活运用turtle模块的交互功能,把上次编写的命令行式猜数游戏改造成图形界面的——请把程序文件命名为guessnum.pyw,这样当你在操作系统中直接双击时就不会再打开黑色的命令行窗口。获取用户输入可以使用对话框,反馈信息则可以直接显示在窗口绘图区域中:

from random import randint import turtle as tt  tt.TurtleScreen._RUNNING = True tt.setup(width=800, height=450, startx=None, starty=None)  # 设置自定义的窗口大小 tt.hideturtle()  # 隐藏画笔图标 tt.color("blue")  # 画笔颜色为蓝色 tt.penup()  # 抬起画笔,移动时不画线 tt.setpos(-300, 0)  # 设置初始位置 myfont = ("黑体", 16, "normal")  # 定义字体  target = randint(1, 100) tt.write("我想了一个1到100之间的整数,请你猜猜看吧:", font=myfont)  # 输出文本 guess = 0 answer = "" while guess != target:     # 使用对话框获取用户输入     guess = tt.simpledialog.askinteger("猜数游戏", "请输入一个整数:")     if guess == target:         answer = "你猜对了!游戏结束。"     elif not guess:  # 用户没有输入数字则中断循环         tt.clear()  # 清空画布以便输出新文本         tt.write("你放弃了,游戏结束", font=myfont)         break     elif guess > target:         answer = "你猜大了,再猜一次:"     else:         answer = "你猜小了,再猜一次:"     tt.clear()     tt.write(answer, font=myfont) tt.done() 
编程入门06:Python海龟绘图

06_turtle_guess.png

海龟绘图很有趣,你可以查看官方在线文档以了解turtle模块的更多细节 https://docs.python.org/3.6/library/turtle.html

——编程原来是这样……

编程小提示:模块的运行

Python标准库中还有一个turtledemo模块,这是turtle绘图功能演示程序,输入以下系统命令即可运行turtledemo模块:

python -m turtledemo 

只要模块中定义了可运行对象(实现功能或用于测试),模块就是可运行的。实际上,你也可以输入以下系统命令来运行turtle模块:

python -m turtle 

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 编程入门06:Python海龟绘图

分享到:更多 ()

评论 抢沙发