知识点:
高级制图模块——tkinter
1、创建一个可以点的按钮
from tkinter import *
''' import turtle
t = turtle.Pen()
和
from turtle import *
t = Pen()
两者等价 '''
tk = Tk()
def hello():
print('hello there')
btn = Button(tk,text = "click me",command = hello)
# text后面是显示在按钮上的图片
btn.pack()
# btn.pack()代表结束,还让屏幕上的每个东西都排列好
运行和出现如图所示的按钮,然后点击一下按钮,调用一下hello函数,然后输出依次 hello there
2、具名参数
普通参数 person(4,3)
具名参数 person(height = 3,width = 4)
3、创建一个画图用的画布
from tkinter import*
tk = Tk()
canvas = Canvas(tk,width = 500,height = 500)
canvas.pack()
4、在Python中,X坐标从左往右为正,Y坐标从上往下为正
5、在Python中,画矩形给出左上角和右下角坐标即可。
from tkinter import*
tk = Tk()
canvas = Canvas(tk,width = 500,height = 500)
canvas.pack()
canvas.create_rectangle(10,10,50,50)
# 坐标依次为 x(左上角)、y(左上角)、x(右下角)、y(右下角)
6、设置颜色
canvas.create_rectangle(10,10,50,50,fill = '#ffd800')
fill也可以fill = ‘pink’
tkinter也可以调用颜色选择器:
from tkinter import*
colorchooser.askcolor()
选择好颜色之后点击确定,会返回一个元组
((235.91796875,86.3359375,153.59765625),'#eb5699')
分别是RGB的各颜色百分比,和这个颜色的十六进制版本。
所以也可以这样调用
c = colorchooser.askcolor()
canvas.create_rectangle(10,10,50,50,fill = c[1])
from tkinter import*
tk = Tk()
canvas = Canvas(tk,width = 400,height = 400)
canvas.pack()
canvas.create_arc(10,10,200,100,extent = 180,style = ARC)
# 前四个数字是包含圆弧的矩形的坐标(左上角和右下角的坐标)
# extent的值是圆弧的角度
# style = ARC指定是圆弧
#若要画完整的椭圆,extent应该为359而不是360,因为Python把360度当成0度
8、画多边形
from tkinter import*
tk =Tk()
canvas = Canvas(tk,width = 400,height = 400)
canvas.pack()
canvas.create_polygon(200,10,240,30,120,100,140,120,fill = '',outline = 'black')
Python依次将(200,10)、(240,30)、(120,100)、(140,120)四个点相连接。
即画多边形的时候Python依次将给定的点按顺序串联。
fill = '颜色' :定义了图形的内色
outline = '颜色' :定义了图形边的颜色
9、显示文字
from tkinter import*
tk = Tk()
canvas = Canvas(tk,width = 400,height = 400)
canvas.pack()
canvas.create_text(200,200,text = '欢迎来到Python的世界',fill = 'red',font = ('Times',15))
前两个数字是文字的坐标,不是文字开始的坐标,而是文字中心的坐标。
text = '文字内容'告诉Python输出的文字是什么内容
fill = '颜色'输出文字的颜色
font = ('字体类型',字体大小)定义文字的字形和大小
10、显示图片
tkinter只能显示GIF图片,若要显示其他类型的图片需要用到Python图像库
from tkinter import*
tk = Tk()
canvas = Canvas(tk,width = 400,height = 400)
canvas.pack()
my_image = PhotoImage(file = 'c:\\test.gif')
canvas.creat_image(0,0,anchor = NW,image = my_image)
file = '图片地址'
前两个数字是图片的坐标
anchor = NW让函数使用左上角作为画图的起始点(否则以中心为起始)
11、创建基本动画
import time
from tkinter import*
tk =Tk()
canvas = Canvas(tk,width = 400,height = 400)
canvas.pack()
canvas.create_polygon(10,10,10,60,50,50)
# 创建一个三角形
for x in range(0,60):
canvas.move(1,5,0)
# 把ID为1的对象横移5个像素,纵移0个像素
tk.update()
# 强制tkinter更新屏幕(重画)
time.sleep(0.05)
# 保证图像不会一闪而过
12、让对象对操作有反应
用“消息绑定”来让三角形在有人按下某键时有反应。
让tkinter监视这些操作,然后做出反应。
from tkinter import*
tk =Tk()
canvas = Canvas(tk,width = 400,height = 400)
canvas.pack()
canvas.create_polygon(10,10,10,60,50,35)
def movetriangle(event):
if event.keysym == 'Up':
canvas.move(1,0,-3)
elif event.keysym == 'Down':
canvas.move(1,0,3)
elif event.keysym == 'Left':
canvas.move(1,-3,0)
else:
canvas.move(1,3,0)
canvas.bind_all('<KeyPress-Up>',movetriangle)
canvas.bind_all('<KeyPress-Down>',movetriangle)
canvas.bind_all('<KeyPress-Left>',movetriangle)
canvas.bind_all('<KeyPress-Right>',movetriangle)
传入movetriangle的event对象中包含了几个变量,其中一个变量叫做keysym,它是一个字符串,包含了实际按键的值。
13、返回ID
只要用了画布上面以create_开头的函数,总会返回一个ID,这个编号可以在其他画布函数中使用。
mytriangle = canvas.create_polygon(10,10,10,60,50,35)
将所画三角形的ID赋值给变量mytriangle