将图像添加到Tkinter

时间:2013-03-13 09:05:23

标签: python tkinter

我已将图像文件添加到tkinter中的代码中,但它基本上填满了我的整个框架,所以如果可能的话,你可以推荐一个教程来展示或解释如何做到这一点......除非你能在这里给我看看

我没有添加完整的代码,但是一旦将它保存在python目录中,下面的代码就会显示一个测试图像。

我想创建“下一个”按钮,它会打开一个新的框架,上面有另一个图像。

from Tkinter import *

root = Tk()
ButtonImage = PhotoImage(file='test.gif')
testButton = Button(root, image=ButtonImage)
testButton.pack()
root.mainloop()

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

from Tkinter import *
from glob import glob

class ImageFrame(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.images = glob("*.gif")
        self.cur = 0
        # label showing the image
        self.image = PhotoImage()
        imagelabel = Label(self, image=self.image)
        imagelabel.grid(row=1, column=1)
        # button cycling through the images
        button = Button(self, text="NEXT", command=self.show_next)
        button.grid(row=2, column=1)
        # layout and show first image
        self.grid()
        self.show_next()

    def show_next(self):
        self.cur = (self.cur + 1) % len(self.images)
        self.image.configure(file=self.images[self.cur])

ImageFrame().mainloop()

一些解释:

  • glob用于获取与当前目录中某些模式匹配的所有文件的列表
  • grid是一个简单但非常灵活的Tkinter布局管理器(参见Tkinter reference
  • 绑定到按钮的show_next方法循环显示图像,并使用PhotoImage
  • 将新图像绑定到configure

结果是一个简单的框架,显示一个大图像和一个按钮,循环显示当前目录中的gif图像。

答案 1 :(得分:0)

有许多模块可以帮助您解决这一问题。您可以使用PIL模块。通常,在像您这样的情况下,我会使用PIL模块加载图像并将其粘贴到框架上。这就是您的操作方式。

from Tkinter import *
from PIL import Image, ImageTk
root = Tk()
Image       = Image.open(path).resize((300, 300)), Image.ANTIALIAS
ButtonImage = ImageTk.PhotoImage(Image)
# If you are using image by itself. Without it being a button. 
#Image_Label = Label(image = self.HomeImage, borderwidth=0, highlightthickness=0)
# Otherwise 
testButton = Button(root, image=ButtonImage)
testButton.pack()
root.mainloop()

我相信这肯定会帮助您调整图像的大小并将图像作为按钮加载到屏幕上。我们使用PIL将图像加载到框架上并调整图像大小。这也是您之前所要求的。我在Image.open()函数上使用了resize方法。这会将图像调整为所需的尺寸。标准是该图像的实际尺寸。