如何在Python中使用PIL转换

如何在Python中使用PIL转换,python,python-imaging-library,Python,Python Imaging Library,这是我的代码,我收到错误消息: 。。。返回getattrself.tk,attr 属性错误:临时图片 我需要设置两个按钮:[放大]和[缩小] 如果你有更好的想法,请说出来 我将使用这张图片通过图形结构绘制地图 from Tkinter import * from PIL import Image, ImageTk, ImageDraw, ImageOps, ImageEnhance bairro = "botafogo.jpg" class Painel(Tk)

这是我的代码,我收到错误消息:

。。。返回getattrself.tk,attr 属性错误:临时图片

我需要设置两个按钮:[放大]和[缩小]

如果你有更好的想法,请说出来

我将使用这张图片通过图形结构绘制地图

    from Tkinter import * 
    from PIL import Image, ImageTk, ImageDraw, ImageOps, ImageEnhance
    bairro = "botafogo.jpg"
    class Painel(Tk):
        def __init__(self):
            Tk.__init__(self)                   #create ui
            self.zoom = Frame(self)
            self.zoom.pack()
            self.zin  = Button(self.zoom, command = self.zoom_in,  text = "Zoom In")
            self.zin.pack()
            self.zout = Button(self.zoom, command = self.zoom_out, text = "Zoom Out")
            self.zout.pack()
            self.c    = Canvas(self, bd=0, highlightthickness=0, width=100, height=100)
            self.c.pack(fill='both', expand=1)
            self.main_pic = Image.open(bairro)  #load image
            self.main_pic.thumbnail((800, 600))
            self.tkphoto  = ImageTk.PhotoImage(self.main_pic)
            self.canvasItem = self.c.create_image(0, 0, anchor='nw', image = self.tkphoto)
            self.c.config(width = self.main_pic.size[0], height = self.main_pic.size[1])
            self.temp = self.main_pic.copy()    # 'working' image

        def update_painel(self):
            self.tkphoto = ImageTk.PhotoImage(self.temp_pic)
            self.c.itemconfigure(self.canvasItem, image = self.tkphoto)

        def zoom_in(self):
            self.temp_pic = self.temp_pic.transform( ( self.temp_pic.size[0]/2,
                                                       self.temp_pic.size[0]/2
                                                       ),
                                                     Image.EXTEND,
                                                     ( 0, 0, self.temp_pic[0], self.temp_pic[1]
                                                       )
                                                   )
            self.update_painel()

        def zoom_out(self):
            self.temp_pic = self.main_pic
            self.update_painel()

    app = Painel()
    app.mainloop()

深度复制指令应为

self.temp\u pic=self.main\u pic.复制“工作”图像

而不是

self.temp=self.main\u pic.copy“工作”图像**