好的,所以我正在尝试制作一个按下按钮时显示图像的程序,我无法将图像输入程序 这是我的完整代码:
# 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)
任何帮助将不胜感激。谢谢:))
答案 0 :(得分:0)
这是你不应该做from tkinter import *
的一个很好的例子。 Tkinter有一个Image
类,因此通过从PIL导入Image
后执行此导入,您将使用tkinter类覆盖PIL
类。
由于您已经以首选方式(import tkinter as tk
)导入tkinter,因此您无需再次导入tkinter。您需要删除语句from tkinter import *
。
您还错误地创建了Tk
的多个实例。我不知道它是否有助于解决问题,但这不是你应该做的事情。如果您需要其他窗口,则应创建Toplevel
的实例。