在Tkinter中添加图像
我在我的tkinter代码中添加了一张图片,但这张图片几乎填满了整个框架。如果可以的话,你能推荐一个教程,教我怎么处理这个问题吗?或者你能在这里给我演示一下吗?
我没有添加完整的代码,但下面的代码应该能在你把图片保存到Python目录后显示一张测试图片。
我想创建一个“下一步”按钮,点击后能打开一个新框架,里面显示另一张图片。
from Tkinter import *
root = Tk()
ButtonImage = PhotoImage(file='test.gif')
testButton = Button(root, image=ButtonImage)
testButton.pack()
root.mainloop()
2 个回答
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方法。这个方法可以把图片调整到你想要的大小。标准的尺寸就是那张图片的实际大小。
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 参考)。show_next
方法是和按钮绑定在一起的,它可以循环显示图片,并通过configure
方法将新图片绑定到PhotoImage
上。
最终的效果是一个简单的框架,里面显示一张大图片和一个按钮,可以在当前目录中的 gif
图片之间切换。