2013-03-13 147 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