无法使用tkinter将图像添加到Gui中

时间:2018-05-20 02:15:09

标签: python-3.x tkinter

好的,所以我正在尝试制作一个按下按钮时显示图像的程序,我无法将图像输入程序 这是我的完整代码:

# Nicolas Bart
import tkinter as tk
from PIL import Image, ImageTk

from tkinter import *

window = tk.Tk()
window.title('Bad Meme Generator')
window.geometry('500x500')
window.configure(bg='saddle brown')

meme_label = tk.Label(window, text='PRESS BUTTON FOR BAD MEMES:', 
fg='blue4', bg='brown4', font=('comicsans', '20'))
meme_label.grid(pady=25, padx=25, column=0, row=0)


def button_command():
    meme_window = tk.Tk()
    meme_window.title('I Warned You')
    meme_window.grid()

image = Image.open('pexels-photo-247932.jpg')
photo = ImageTk.PhotoImage(image)


label = tk.Label(meme_window, image=photo)
label.image = photo
label.place(x = 0, y = 0)


button = tk.Button(window, text='Dont Do It!', command=button_command, 
padx=100, pady=75, font=('comicsans', '20'),
               bg='brown4', fg='blue4')
button.grid(column=0, row=1)

warning_label = tk.Label(window, text="Really shit tier memes incoming:", 
bg='brown4', fg='blue4',
                         font=('comicsans', '20'))
warning_label.grid(pady=75)

window.mainloop()

每次我运行这个程序时,当我按下按钮打开图像时,它会给出错误“AttributeError:type object'Image'没有属性'open'”

给出错误的程序的具体部分是:

def button_command():
    meme_window = tk.Tk()
    meme_window.title('I Warned You')
    meme_window.grid()

    image = Image.open('pexels-photo-247932.jpg')
    photo = ImageTk.PhotoImage(image)


    label = tk.Label(meme_window, image=photo)
    label.image = photo
    label.place(x = 0, y = 0)

任何帮助将不胜感激。谢谢:))

1 个答案:

答案 0 :(得分:0)

这是你不应该做from tkinter import *的一个很好的例子。 Tkinter有一个Image类,因此通过从PIL导入Image后执行此导入,您将使用tkinter类覆盖PIL类。

由于您已经以首选方式(import tkinter as tk)导入tkinter,因此您无需再次导入tkinter。您需要删除语句from tkinter import *

您还错误地创建了Tk的多个实例。我不知道它是否有助于解决问题,但这不是你应该做的事情。如果您需要其他窗口,则应创建Toplevel的实例。