Python tkinter:仅显示图像的一部分

6
这只显示了我图片的右下角。我做错了什么?
from Tkinter import *
from PIL import Image, ImageTk

class Application(Frame):
    def __init__(self, titl, master=None):
        Frame.__init__(self, master)
        self.grid()

        self.create_widgets()
        self.master.title(titl)

    def create_widgets(self):

        image_file = 'sample.jpg'
        image1 = ImageTk.PhotoImage(Image.open(image_file))
        w = image1.width()
        h = image1.height() 
        self.canvas = Canvas(self, width=w+5, height=h+5)
        self.canvas.grid(row=0, column=0)
        self.canvas.create_image(0,0, image=image1)
        self.canvas.image = image1

app = Application('Image')

app.mainloop()

请参考以下的tkinter+PIL示例,以显示图像:http://code.activestate.com/recipes/521918-pil-and-tkinter-to-display-images/ - Fredrik Pihl
为什么标签可以工作,但画布不行? - foosion
1个回答

8

由于默认情况下锚点的值为CENTER,因此您需要将其设置为NW(西北角),如名称所示,会将图像居中于给定坐标上:

self.canvas.create_image(0,0, image=image1, anchor=NW)

如果保留图像ID,您稍后可以更改它:

self.idImage = self.canvas.create_image(0,0, image=image1)
...
self.canvas.itemconfig(self.idImage, anchor=NW)

http://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.create_image-method


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接