1 说明:
=====
1.1 图片来自今日头条正版免费图库,向杨幂表示致谢和致敬!
1.2 利用美女图片的赏析和图片的操作,熟悉python-tkinter的图片显示方法,增加学习兴趣,代码和讲解详细,由浅入深,小白秒懂,值得收藏。
1.3 tkinter是python的自带的GUI,目前本机python3.8自带tkinter,与python2的tkinter可能使用上有一点不一样,请注意。
1.4 图片先赏析一下,8张图片。
2 tkinter本身图片显示方法
===================
2.1 只能显示png和gif格式的图片,将3.jpeg,截图为3.png,即可。
2.2 tk.Label法加载图片,代码:
import tkinter as tk
root = tk.Tk()
#创建一个图片管理类
#photo = tk.PhotoImage(file="/home/xgj/Desktop/tkinter-pic/3.jpeg") #报错
photo = tk.PhotoImage(file="/home/xgj/Desktop/tkinter-pic/3.png") #可以
#把图片整合到标签类中
imgLabel = tk.Label(root,image=photo)
#四种方位:top, bottom, left, or right
imgLabel.pack(side=tk.TOP)
tk.mainloop()
2.3 canvas法:不是最佳的。
from tkinter import *
tk = Tk()
#创建一个图片管理类
photo = PhotoImage(file="/home/xgj/Desktop/tkinter-pic/3.png")
#画布大小设置
canvas = Canvas(tk,width=2000, height= 2000)
#canvas = Canvas(tk) #默认画布大小不大,显示不全
#加载到canvas上,x和y是坐标点,是图片中心点的坐标点
#是图片长宽的一半
canvas.create_image(500,500,image = photo)
canvas.pack()
tk.mainloop()
3 读取任意格式的图片
================
3.1 采用PIL库来实现
3.2 读取1.jpeg,效果图
3.3 代码,采用PIL库法和tk.Label标签法显示图片是最佳选择!
import tkinter as tk
from PIL import Image, ImageTk
root = tk.Tk()
#用PIL图片管理器读取和管理图片,可读取任意格式的图片
image = Image.open("/home/xgj/Desktop/tkinter-pic/pic/1.jpeg")
photo = ImageTk.PhotoImage(image)
#把图片整合到标签类中
imgLabel = tk.Label(root,image=photo)
#四种方位:top, bottom, left, or right
imgLabel.pack(side=tk.TOP)
tk.mainloop()
4 高级一点:
========
4.1 canvas图片显示并图片移动,现将图片大小修改为200和200,代码采用PIL法,此处省略。
4.2 效果图
4.3 代码:
#第1步:导入模块
from tkinter import *
#第2步:窗口相关设置
#窗口初始化
tk = Tk()
#设置窗口的大小宽x高+偏移量(x和y坐标点)
tk.geometry('1000x1000+500+200')
#设置窗口标题
tk.title('杨幂图片赏析')
#第3步:读取图片和画布显示
#创建一个图片管理类,将图片设置小一点200×200
photo = PhotoImage(file="/home/xgj/Desktop/tkinter-pic/33.png")
#画布大小和背景颜色设置
canvas = Canvas(tk,width=1000, height= 1000,bg='black')
canvas.create_image(100,100,image = photo)
canvas.pack()
#第4步:定义图片移动函数
#上下左右方向键
def picMove(event):
if event.keysym == 'Left':
canvas.move(1,-5,0)
if event.keysym == 'Right':
canvas.move(1,5,0)
if event.keysym == 'Up':
canvas.move(1,0,-5)
if event.keysym == 'Down':
canvas.move(1,0,5)
#第5步:方向键和功能绑定到画布上
canvas.bind_all('<KeyPress-Left>',picMove)
canvas.bind_all('<KeyPress-Right>',picMove)
canvas.bind_all('<KeyPress-Up>',picMove)
canvas.bind_all('<KeyPress-Down>',picMove)
#第6步:tk循环挂起
tk.mainloop()
5 再高级一点:
===========
5.1 8张图片动态切换,pic文件夹,里面1~8.jpeg图片
5.2 效果图:
5.3 代码
#第1步:导入模块
from tkinter import *
from PIL import Image,ImageTk
#第2步:窗口初始化
root=Tk()
#设置窗口的大小宽x高+偏移量(x和y坐标点)
#root.geometry('1000x1000+500+200') #如果这个不设置,窗口大小就随图片大小自适应
#来高级一点,仅仅设置窗口的位置,大小不设置
root.geometry('+500+200')
#设置窗口标题
root.title('杨幂图片动态赏析')
#第3步:读取图片
IMG=[]
#8张图加1
for i in range(1,9):
im=Image.open('/home/xgj/Desktop/tkinter-pic/pic/'+str(i)+'.jpeg')
img=ImageTk.PhotoImage(im)
IMG.append(img)
#第4步:将图片显示在label标签上
counter=0
label=Label(root,image=IMG[counter])
label.grid(row=1)
#第5步:图片更改函数
def chimg():
global label
global counter
#8张图减1
if counter<7:
counter+=1
else:
counter=0
label.destroy()
label=Label(root,image=IMG[counter])
label.grid(row=1)
#第6步:按钮设置和功能调用
Button(root,text='换图',width = 15, height = 2,bg='pink',command=chimg).grid(row=0)
mainloop()
6 自动图片定时切换
===============
6.1 效果图
6.2 代码:
#coding=utf-8
#导入模块
from tkinter import *
#初始化Tk
top = Tk()
#标题名
top.title('定时更换图片')
#仅仅设置窗口的位置,大小不设置
top.geometry('+500+200')
#注意png格式,自身图片管理器读取图片,格式png和gif
img1 = PhotoImage(file='/home/xgj/Desktop/tkinter-pic/pic/1.png')
img2 = PhotoImage(file='/home/xgj/Desktop/tkinter-pic/pic/2.png')
img3 = PhotoImage(file='/home/xgj/Desktop/tkinter-pic/pic/3.png')
img4 = PhotoImage(file='/home/xgj/Desktop/tkinter-pic/pic/4.png')
#初始化i
i = 1
#图片切换时间1000ms(1秒)
chtime=1000
#图片切换函数定义
def changeImage(i):
#python %取余数
if i % 3 == 1:
label.configure(image = img1)
i = i + 1
label.after(chtime,changeImage,i)
elif i % 3 == 2:
label.configure(image=img2)
i = i + 1
label.after(chtime, changeImage,i)
else:
label.configure(image=img3)
i = i + 1
label.after(chtime, changeImage, i)
#标签定义和初始化显示图片1
label = Label(top, image=img1)
#标签位置pack设置
label.pack(fill=X,expand=1)
#切换间隔时间,函数调用,i
label.after(chtime,changeImage,i)
#循环挂起
top.mainloop()
超级齐全,分享处理。