python tkinter:只显示图像的一部分

问题描述:

这只显示图像的右下角。我究竟做错了什么?python tkinter:只显示图像的一部分

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() 
+0

参见例如对于tkinter + PIL示例http://code.activestate.com/recipes/521918-pil-and-tkinter-to-display-images/ –

+0

为什么要标签工作,但不是画布? – foosion

你必须锚设置为NW(西北),因为它的价值是CENTER默认情况下,它顾名思义中心在给定的坐标图像:

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

+0

这将做到这一点。谢谢 – foosion