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()
答
你必须锚设置为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
参见例如对于tkinter + PIL示例http://code.activestate.com/recipes/521918-pil-and-tkinter-to-display-images/ –
为什么要标签工作,但不是画布? – foosion