如何在窗口上弹出图像Tkinter Python 3
嘿,我正在学习一个教程,但我不能让它正常工作。当您按下菜单按钮时,我试图添加图像:如何在窗口上弹出图像Tkinter Python 3,python,python-3.x,tkinter,python-3.5,Python,Python 3.x,Tkinter,Python 3.5,嘿,我正在学习一个教程,但我不能让它正常工作。当您按下菜单按钮时,我试图添加图像: from tkinter import * from PIL import * class Window(Frame): def __init__(self, master = None): Frame.__init__(self, master) self.master = master self.init_Window() def in
from tkinter import *
from PIL import *
class Window(Frame):
def __init__(self, master = None):
Frame.__init__(self, master)
self.master = master
self.init_Window()
def init_Window(self):
self.master.title("GUI")
self.pack(fill =BOTH, expand=1)
#quitButton = Button(self, text = "Quit", command = self.client_exit)
#quitButton.place(x=0,y=0)
menu = Menu(self.master)
self.master.config(menu=menu)
file=Menu(menu)
file.add_command(label='Save',command= self.client_exit)
file.add_command(label='Exit',command= self.client_exit)
menu.add_cascade(label='File',menu=file)
edit = Menu(menu)
edit.add_command(label='Show Image', command=self.showImg)
edit.add_command(label='Show Text', command=self.showTxt)
menu.add_cascade(label='Edit',menu=edit)
def showImg(self):
load = Image.open('Pic.png')
render = ImageTk.PhotoImage(load)
img = Label(self, image=render)
img.image = render
img.place(x=0,y=0)
def showTxt(self):
text = Label(self,text='Hey')
text.pack
def client_exit(self):
exit()
root = Tk()
root.geometry("400x300")
app = Window(root)
root.mainloop()
我已经试着在学校、StackOverflow和YouTube四处打听了大约3天,但我的问题没有得到任何解决,如果你需要更多的信息,请询问。我得到了错误代码:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.5/tkinter/__init__.py", line 1558, in __call__
return self.func(*args)
File "/root/Desktop/Python Programs/Tkinter.py", line 35, in showImg
load = Image.open('pic.png')
AttributeError: type object 'Image' has no attribute 'open'
您使用的是
import*
,因此不知道是使用tkinter.Image
还是PIL.Image
。这就是为什么不应该使用import*
试一试
您使用的是
import*
,因此不知道是使用tkinter.Image
还是PIL.Image
。这就是为什么不应该使用import*
试一试
要正确处理图像有点棘手,有一些技巧:使图像对象保持全局,避免垃圾收集,避免属性错误(通过读取文档) 在本例中,我不使用PIL,而是加载gif图像
#!/usr/bin/python
#-*-coding:utf-8 -*
#Python 3
#must have a valid gif file "im.gif" in the same foldeer
from tkinter import *
Window=Tk()
ListePhoto=list()
ListePhoto.append(PhotoImage(file="im.gif"))
def Try():
Window.title('image')
Window.geometry('+0+0')
Window.configure(bg='white')
DisplayImage()
def DisplayImage():
label_frame=LabelFrame(Window, relief='ridge', borderwidth=12, text="AnImage",
font='Arial 16 bold',bg='lightblue',fg='black')
ListeBouttons=list()#Liste Vide pour les Radiobutton(s)
RadioButton = Radiobutton(label_frame,text="notext",image=ListePhoto[0], indicatoron=0)
RadioButton.grid(row=1,column=1)
label_frame.pack(side="left")
if __name__ == '__main__':
Try()
要正确处理图像有点棘手,有一些技巧:使图像对象保持全局,避免垃圾收集,避免属性错误(通过读取文档) 在本例中,我不使用PIL,而是加载gif图像
#!/usr/bin/python
#-*-coding:utf-8 -*
#Python 3
#must have a valid gif file "im.gif" in the same foldeer
from tkinter import *
Window=Tk()
ListePhoto=list()
ListePhoto.append(PhotoImage(file="im.gif"))
def Try():
Window.title('image')
Window.geometry('+0+0')
Window.configure(bg='white')
DisplayImage()
def DisplayImage():
label_frame=LabelFrame(Window, relief='ridge', borderwidth=12, text="AnImage",
font='Arial 16 bold',bg='lightblue',fg='black')
ListeBouttons=list()#Liste Vide pour les Radiobutton(s)
RadioButton = Radiobutton(label_frame,text="notext",image=ListePhoto[0], indicatoron=0)
RadioButton.grid(row=1,column=1)
label_frame.pack(side="left")
if __name__ == '__main__':
Try()
您使用的是
import*
,因此不知道是使用tkinter.Image
还是PIL.Image
。这就是为什么你不应该使用import*
你使用import*
所以你不知道你是使用tkinter.Image
还是PIL.Image
。这就是为什么您不应该使用import*
无法导入名称ImageTk,我可能没有正确安装PIL,我在linux上,因此这可能是一个问题…然后使用pip安装pillow
工作,获得了pillow 9.0.1,但仍然是git问题无法导入名称“ImageTk”显示完整的错误消息。不要使用Tkinter
作为文件名,因为import
可能会尝试导入文件Tkinter
,而不是python模块Tkinter
回溯(最后一次调用):file”/root/Desktop/python Programs/Tkinter.py“,from PIL import Image中的第2行,ImageTk导入错误:无法导入名称“ImageTk”>>>无法导入名称ImageTk,我可能没有正确安装PIL,我在linux上,因此这可能是一个问题…然后使用pip安装pillow
工作,获得pillow 9.0.1,但仍然是git问题无法导入名称“ImageTk”显示完整的错误消息。不要使用Tkinter
作为文件名,因为import
可能会尝试导入您的文件Tkinter
,而不是python模块Tkinter
回溯(最后一次调用):file/root/Desktop/python Programs/Tkinter.py”,第2行,从PIL导入图像,ImageTk导入错误:无法导入名称“ImageTk”>>