在使用TKin单击Python中的按钮之前,如何切换图像

2024-06-24 13:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我希望在按下按钮1后立即显示picture1.jpg。过了一段时间,我想显示picture2.jpg。在以下情况下,按下按钮1 5秒后,只显示picture2.jpg。我怎么换照片?在

from Tkinter import *
from PIL import Image, ImageTk
import time

def show_image():
    while True:
        image = Image.open("picture1.jpg")
        tk_img = ImageTk.PhotoImage(image)
        x = canvas.create_image(400, 300, image=tk_img)
        canvas.itemconfigure(x, state=NORMAL)
        # I want to show picture1.jpg now
        time.sleep(5)  #This is a dummy because it takes a while for picture2.jpg
        #Now I can show picture2.jpg
        image = Image.open("picture2.jpg")
        tk_img = ImageTk.PhotoImage(image)
        x = canvas.create_image(400, 300, image=tk_img)
        canvas.itemconfigure(x, state=NORMAL)
        yield

root = Tk()
canvas = Canvas(root, width=850, height=750)
canvas.grid(row=0, column=0)

button1 = Button(
    root, text="Insert next device and then take a picture", command=show_image().next, anchor='w',
    width=50, activebackground="#33B5E5" ,fg = "blue" , font=("Arial", 24))
button1.grid(row=1, column=0)
root.mainloop()

Tags: fromimageimportimgtimeshowroot按钮
1条回答
网友
1楼 · 发布于 2024-06-24 13:24:40

首先,作为一般规则,您不应该在GUI的主线程中调用sleep。它会导致你的整个程序暂停按钮不起作用,屏幕不会更新,等等

在未来有一段路要走。更改图像,然后使用此函数稍后将其更改回原处。粗略地说,应该是这样的:

def show_image(path):
    image = Image.open(path)
    tk_img = ImageTk.PhotoImage(image)
    x = canvas.create_image(400, 300, image=tk_img)

def switch_images():
    show_image("picture1.jpg")
    root.after(5000, show_image, "picture2.jpg")

相关问题 更多 >