2013-03-13 218 views
3

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

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

我想创建'下一个'按钮,它会打开一个新的框架与另一个图像。

from Tkinter import * 

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

什么是具体的问题?让按钮不要填满整个窗口,或者如何创建一个新窗口? – 2013-03-13 09:17:38

+0

基本上我想结束在框架的上半部分,然后下面的一些文本和一些单选按钮和下一个按钮移动到下一张幻灯片上的图片。 我做了一个框架与我的按钮和文字,但我不知道如何将图像添加到框架。 – Simula 2013-03-13 09:21:57

回答

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方法,它被绑定到按键,可以通过图像周期和结合使用configure

结果表示虽然大的图像和一个按钮,骑自行车的简单帧到PhotoImage新的图像当前目录中的gif图像。

+0

您的示例代码不会创建'Tk'的实例。显然这是自动发生的,但最佳实践表明你应该明确地创建它。此外,您的示例将显示较差的调整行为。否则,这是OP正在寻找的一个很好的例子。 – 2013-03-13 11:01:58

+0

多数民众赞成在即时寻找:)你能解释还有什么需要使其最佳实践... 谢谢你:) – Simula 2013-03-13 11:18:06