⽤Python中的tkinter模块作图
tkinter 可以⽤来创建完整的应⽤程序,⽐如简单的字处理软件,还有简单的绘图软件。
mineshare⼀、创建⼀个可以点的按钮
⽤tkinter创建⼀个带按钮的简单程序,代码如下:
>>> from tkinter import*
>>> tk = Tk()
>>> btn = Button(tk,text = "click me")
>>> btn.pack()
在第⼀⾏上,我们引⼊了 tkinter 模块的内容。⽤ from 模块名 import* 就可以在不⽤模块名字的情况下使⽤模块的内容了。
下⾯是我们创建的按钮:
注:这个“按我”的按钮什么也不做,除⾮我们改⼀些代码(别忘记先关闭之前创建的窗⼝)。
⾸先,我们创建⼀个函数来打印⼀些⽂字:
>>> def hello():
print('hello world')
改动我们的例⼦让它使⽤这个新函数:
>>> from tkinter import*
>>> tk = Tk()
>>> btn = Button(tk,text = "click me",command = hello)
>>> btn.pack()
现在当我们点击按钮时就会看到Shell程序中写着“你好”。每次点击按钮都会看到它。效果如下:
(这是我们第⼀次使⽤“具名函数”,在继续画图之前我们先来了解下这个函数)
⼆、使⽤具名函数
具名函数和普通的参数⼀样,只是它不是按照函数所提供的参数的顺序来决定哪⼀个参数获得哪⼀个值,我们明确地定义值的名字,所以可以写成任何顺序。具名函数可以让我们只为我们想给它赋值的参数提供值。下⾯我们举例说明。
假设我们有⼀个函数叫person,它有两个参数:宽(width)和⾼(height)。
>>> def person(width,height):
print('I am %s feet wide,%s feet high' % (width,height))
通常,我们是这样调⽤它的:
>>> person(4,3)
I am 4 feet wide,3 feet high
使⽤具名参数,我们可以调⽤函数并指定每个值赋给哪个参数:
>>> person(height=3,width=4)
I am 4 feet wide,3 feet high
⼤家看,前后赋值的顺序虽然不⼀样,但结果却是⼀样的。
三、创建⼀个画图⽤的画布
如果要画图的话,我们就需要⼀个不同的要素:⼀个 canvas(画布)对象,也就是Canvas类的对象(由tkinter模块提供)。
当我们创建⼀个画布时,我们给Python传⼊画布的宽度和⾼度(以像素为单位)。其他⽅⾯和按钮的代码相同:
>>> from tkinter import*
>>> tk = Tk()
>>> canvas = Canvas(tk,width=500,height=500)
>>> canvas.pack()
注:pack函数的作⽤是让画布显⽰中正确的位置上。如果没调⽤这个函数,就不会正常地显⽰任何东西。
四、画线
protesters
要在画布上画线,就要⽤到像素坐标。
⼀般画布的左上⾓为起点坐标(0,0),画布的右下⾓为终点坐标(500,500)。(根据前⾯创建画布的⼤⼩所得)
我们⽤ create_line函数来指定这些坐标,如下所⽰:
大学英语精读第三册>>> ate_line(0,0,500,500)
1
函数create_line 返回1,它是个标志。如果我们要⽤turtle模块做同样的事情,那就需要下⾯这段代码:
>>> import turtle
>>> turtle.tup(width=500,height=500)
>>> t=turtle.Pen()
>>> t.up()
>>> t.goto(-250,250)
>>> t.down()
>>> t.goto(500,-500)
turtle模块画线
效果如下:
五、画盒⼦
韩剧赤道的男人1,画正⽅形
⽤ turtle模块,我们画盒⼦是可以通过向前,转弯,再向前,再转弯,以此类推来画⼀个盒⼦。最后我们可以通过改变向前移动的距离来画出⼀个矩形。但⽤tkinter模块画矩形就变得简单许多了,我们只需要知道各个⾓的坐标,例如:
>>> canvas = Canvas(tk,width=400,height=400)
>>> canvas.pack()
>>> ate_rectangle(10,10,50,50) ##(10,10)为正⽅形右上⾓坐标,(50,50)为正⽅形右下⾓坐标
在这段代码中,我们⽤tkinter建⽴了⼀个400像素宽,400像素⾼的画布,然后在窗⼝的左上⾓画⼀个正⽅形,效果如下:
2,画长⽅形
下⾯尝试画两个长⽅形(前四⾏代码⼀样,就最后⼀⾏ate_rectangle函数那需要改变下坐标参数):
四级词组
>>> ate_rectangle(10,10,300,50)
1
适销对路>>> ate_rectangle(10,10,50,300)
andrew ng
2
3,画许多矩形
引⼊random随机数模块,然后写⼀个函数⽤随机数作为矩形左上⾓和右下⾓的坐标。
random模块中提供⼀个叫randrange函数。该函数的作⽤是:当我们给这个函数传⼊⼀个数字,它会返回⼀个在0和这个数字之间的随机整数。例如,调⽤randrange(10)将会返回⼀个0~9之间的数字,randrange(100)将会返回⼀个0~99之间的数字。
heart什么意思
tk = Tk()
canvas = Canvas(tk,width=400,height=400)
canvas.pack()
def random_rectangle(width,height):
x1 = random.randrange(width) ##建⽴变量x1,设定它的值是从0到参数width之间的⼀个随机数
y1 = random.randrange(height)
x2 = x1 + random.randrange(width) ##建⽴变量x2,它是由前⾯计算得到的x1加上⼀个随机数
y2 = y1 + random.randrange(height)
推荐信
random_rectangle(400,400)
很多的矩形
(有没有感觉像现代艺术作品呢,嘿嘿)
4,设置颜⾊
改⼀下 random_rectangle函数,传⼊⼀个额外的参数(fill_color)来指定矩形的颜⾊。
from tkinter import*
import random
tk = Tk()
canvas = Canvas(tk,width=400,height=400)
canvas.pack()
def random_rectangle(width,height,fill_color):
x1 = random.randrange(width) ##建⽴变量x1,设定它的值是从0到参数width之间的⼀个随机数
y1 = random.randrange(height)
x2 = x1 + random.randrange(width) ##建⽴变量x2,它是由前⾯计算得到的x1加上⼀个随机数
y2 = y1 + random.randrange(height)
random_rectangle(400,400,'red')
random_rectangle(400,400,'blue')
random_rectangle(400,400,'orange')
random_rectangle(400,400,'yellow')
random_rectangle(400,400,'pink') ##粉红⾊
random_rectangle(400,400,'purple') ##紫⾊
random_rectangle(400,400,'violet') ##紫罗兰⾊
random_rectangle(400,400,'magenta') ##品红⾊
random_rectangle(400,400,'cyan') ##蓝绿⾊
带颜⾊的矩形
思考:如果我们想定制⼀个和有命名的颜⾊不完全⼀样的颜⾊怎么办?
六、画圆弧
圆弧是圆周的⼀段,或者说是⼀种曲线,但是为了⽤tkinter画出⼀个圆弧,我们需要⽤create_arc函数在⼀个矩形中作图:>>> from tkinter import*
livejournal
>>> tk = Tk()
>>> canvas = Canvas(tk,width=400,height=400)
>>> canvas.pack()
>>> ate_arc(10,10,200,100,extent=180,style=ARC)
圆弧的左上⾓坐标设置为(10,10),右下⾓坐标是(200,100)。extent 是⽤来指定圆弧的⾓度。
下⾯我们将在页⾯上⾃上⽽下画出⼏个不同的圆弧,这样就可以看到对于create_arc函数使⽤不同⾓度的效果了:>>> ate_arc(10,10,200,80,extent=45,style=ARC)
>>> ate_arc(10,80,200,160,extent=90,style=ARC)
>>> ate_arc(10,160,200,240,extent=135,style=ARC)
>>> ate_arc(10,240,200,320,extent=180,style=ARC)
>>> ate_arc(10,320,200,400,extent=359,style=ARC)