当画布放在框架内时,Tkinter不会在画布上显示图片

时间:2013-05-07 22:09:29

标签: python canvas tkinter frame python-imaging-library

这段代码很好用:

import Tkinter
from PIL import ImageTk, Image

root = Tkinter.Tk()

Image_ = Image.open("optical.jpg")
ImageForTK = ImageTk.PhotoImage(Image_)

ImageCanvas = Tkinter.Canvas(root, width = Image_.size[0], height = Image_.size[1])           
ImageCanvas.pack()
ImageCanvas.create_image(0, 0, anchor = Tkinter.NW, image = ImageForTK)
root.mainloop()

在第二段代码中没有显示图像,因为我在显示图片的画布对象周围添加了一个框架。

import Tkinter
from PIL import ImageTk, Image

root = Tkinter.Tk()

Image_ = Image.open("optical.jpg")
ImageForTK = ImageTk.PhotoImage(Image_)

Frame = Tkinter.Frame(root)
# EDIT:
Frame.pack()
# END EDIT
ImageCanvas = Tkinter.Canvas(Frame, width = Image_.size[0], height = Image_.size[1])           
ImageCanvas.pack()
ImageCanvas.create_image(0, 0, anchor = Tkinter.NW, image = ImageForTK)
root.mainloop()

有人知道这里的错误是什么吗?

感谢您的回答。错过了这个。

1 个答案:

答案 0 :(得分:2)

框架本身需要打包:

Frame = Tkinter.Frame(root)
Frame.pack()

要查看窗口小部件,必须使用几何管理器注册窗口小部件及其所有父窗口小部件,这可以使用packgridplace方法完成。