2011-09-02 212 views
4

這隻顯示圖像的右下角。我究竟做錯了什麼?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

回答

6

你必須錨設置爲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