在tkinter中,可以使用Canvas控件来显示图片或者文字。
1 Canvas类简介
Canvas的中文意思是“画布”,也是tkinter的控件之一。可以将画布作为控件与窗口关联,之后在画布中画出图片或者文字,相当于在窗口中显示图片或文字了。
2 通过Canvas控件显示图片
2.1 创建Canvas控件
通过图1所示的代码创建Canvas控件。
图1 创建Canvas控件
其中,参数root表示创建的窗口,即将创建的画布放在root窗口中;bg表示画布的背景色,lightblue表示浅蓝色;width和height分别表示创建的画布的高度和宽度。
2.2 创建可以在Canvas中显示的图片
Canvas中显示的图片必须是PhotoImage类的实例,因此,需要将图片文件转换为PhotoImage格式,代码如图2所示。
图2 实例化PhotoImage类
其中,file参数指定了要显示的图片。
注意1 要显示图片的格式只能是PGM, PPM, GIF, PNG四种类型。
2.3 在Canvas中显示图片
通过图3所示的代码,可以在Canvas中显示图片。
图3 在Canvas中显示图片
其中,通过Canvas的实例canvas调用了create_image()方法,该方法的作用是在画布中显示图片。前两个参数表示图片的左上角在画布中的坐标,即图片的位置;anchor参数指定了图片位置的参照物,即原点位置,该参数取值是nw表示原点位于画布的坐上角;image参数指定了要显示的图片,image_file即为在“2.2 创建可以在Canvas中显示的图片”中创建的PhotoImage格式的图片。
2.4 将画布放置到窗口中
通过图4显示的代码,将画布放置到窗口上。
图4 将画布放置到窗口上
2.5 代码运行效果
以上代码运行的效果如图5所示。
图5 显示图片的效果
3 通过Canvas控件显示文字
通过Canvas的实例canvas调用create_text()方法显示文字,代码如图6所示。
图6 显示文字
其中,create_text()方法的前两个参数表示文字显示位置的横纵坐标;anchor表示以Canvas的左上角为原点;text表示显示的内容;fill表示文字颜色;font用于指定字体和字号。以上代码的运行效果如图7所示。
图7 显示文字效果
4 完整代码
在窗口中显示图片和文字的完整代码如下所示。
import tkinter
root = tkinter.Tk()
canvas = tkinter.Canvas(root, bg='lightblue', width=450, height=450)
image_file = tkinter.PhotoImage(file='1.png')
image = canvas.create_image(100
, 100
, anchor='nw'
, image=image_file)
canvas.pack()
text = canvas.create_text(100
, 300
, anchor='nw'
, text='霸天虎标志'
, fill='red'
, font=('黑体',30))
root.mainloop()