python动态换图tkinter库的Canvas画布组件

本文介绍如何在Python的tkinter GUI中利用Canvas组件实现动态更换图像。通过创建窗口和按钮,点击不同按钮时调用自定义函数,结合event参数来实现图片的切换。关键在于将图片读取操作放在函数外部,而函数内部仅执行create_image命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前做统计彩票程序,然后想做个窗口程序在窗口里动态的想换哪个统计图表就看哪个,结果半天都做不好,网上各种混乱的代码几乎没一个能用的,最后干脆曲线救国,统计完之后统计视图自动保存成图片,这个比较简单,用savefig就行,然后想看哪张图就读取图片显示到窗口的画布上.

但是动态的在画布上换图很不容易,用了我一天的时间试了无数的代码终于找到了合适的,赶紧贴出来供大家分享.

我的代码写的比较烂,大家凑合看吧.

# -*- coding: utf-8 -*-
"""
Created on Mon May 13 22:27:47 2019
引入工具栏按钮
能换图了
把四种统计图都做了上来
@author: Administrator
"""
from PIL import Image, ImageTk
import matplotlib.pyplot as plt
from tkinter import *
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,NavigationToolbar2Tk #NavigationToolbar2TkAgg
import matplotlib
matplotlib.use('Agg')
from matplotlib.pyplot import plot,savefig
from PIL import Image, ImageTk
from tkinter import ttk

plt.rcParams['font.family'] = 'SimHei' ## 设置字体

root = tk.Tk() # 初始化Tk()
root.title("排列3彩票统计程序")    # 设置窗口标题
root.geometry("1920x1010+0+0")    # 设置窗口大小 注意:是x 不是*
root.resizable(width=True, height&
要在TkinterCanvas画布上实现图片翻页,你可以使用PILPython Imaging Library)来加载和处理图像,并通过Canvas对象的`create_image`方法将图像显示在画布上。以下是一个示例代码: ```python import tkinter as tk from PIL import ImageTk, Image root = tk.Tk() canvas = tk.Canvas(root, width=400, height=400) canvas.pack() # 图片列表 image_list = ["image1.jpg", "image2.jpg", "image3.jpg"] current_image = 0 def show_next_image(): global current_image current_image = (current_image + 1) % len(image_list) show_image() def show_previous_image(): global current_image current_image = (current_image - 1) % len(image_list) show_image() def show_image(): canvas.delete("image") image = Image.open(image_list[current_image]) image = image.resize((400, 400), Image.ANTIALIAS) photo = ImageTk.PhotoImage(image) canvas.create_image(0, 0, image=photo, anchor=tk.NW, tags="image") canvas.image = photo next_button = tk.Button(root, text="下一张", command=show_next_image) next_button.pack() previous_button = tk.Button(root, text="上一张", command=show_previous_image) previous_button.pack() show_image() root.mainloop() ``` 在这个示例中,我们创建了一个Canvas对象并设置其大小。我们定义了一个图片列表和一个当前图片的索引变量`current_image`。然后,我们定义了两个按钮,分别用于显示下一张和上一张图片。 `show_next_image`和`show_previous_image`函数用于切换到下一张和上一张图片,并调用`show_image`函数来在画布上显示图片。`show_image`函数首先删除之前的图片(通过`canvas.delete("image")`),然后加载当前图片并调整大小,最后通过`canvas.create_image`方法将图片显示在画布上。 通过点击按钮,你可以在画布上翻页显示不同的图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值