Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用Tkinter显示不同的图像_Python_Image_Tkinter - Fatal编程技术网

Python 用Tkinter显示不同的图像

Python 用Tkinter显示不同的图像,python,image,tkinter,Python,Image,Tkinter,我在尝试使用Tkinter显示图像时遇到问题。我在一个名为filename1、filename2和filename3的文件夹中有3个文件。我想用两个不同的按钮来显示它们。filename1应该在不单击按钮的情况下显示,然后通过单击其他按钮显示filename2和filename3。然而,这不起作用 结果是,只有filename3正在加载,而所有按钮都不起作用。我不知道为什么会这样。这是我尝试过的代码: from tkinter import * from PIL import Image, Im

我在尝试使用Tkinter显示图像时遇到问题。我在一个名为filename1、filename2和filename3的文件夹中有3个文件。我想用两个不同的按钮来显示它们。filename1应该在不单击按钮的情况下显示,然后通过单击其他按钮显示filename2和filename3。然而,这不起作用

结果是,只有filename3正在加载,而所有按钮都不起作用。我不知道为什么会这样。这是我尝试过的代码:

from tkinter import *
from PIL import Image, ImageTk

root = Tk()

root.geometry("1000x500")
root.resizable(width=True, height=True)

def open_img(name):
    filepath = fr"C:\Users\me\Desktop\folder/{name}.jpg"
    img = Image.open(filepath)
    img = img.resize((1000, 500), Image.ANTIALIAS)
    img = ImageTk.PhotoImage(img)
    panel = Label(root, image=img)
    panel.image = img
    panel.grid(row = 2, column=1)

open_img(filename1)    
    
btn1 = Button(root, text='open image1', command=open_img("filename2")).grid(row=3, column=1)
btn2 = Button(root, text='open image2', command=open_img("filename3")).grid(row=4, column=1)
    
root.mainloop()
这是结果,仅显示filename3。按钮坏了。我做错了什么


当您创建按钮时,您会运行该命令,因为您会以命令结尾

command=open_img("filename2")
要使用参数指定函数,可以使用lambda函数:

command=lambda: open_img("filename2")

您知道
btn1
btn2
将始终是
None
。欲了解更多信息,请阅读