2011-03-19 52 views
0

我有一個顯示幾個字段一個Python的Tkinter框架內的圖標。我還想添加 紅色/黃色/綠色圖標,它將顯示外部設備的狀態。
的圖標是從一個叫ICON_LED_RED.ico文件加載。如何顯示和更改蟒蛇Tk的框架

  1. 如何顯示在我的幀的圖標?
  2. 我如何在運行時更改圖標?例如與BitmapImage的( 'GREEN.ico')取代的BitmapImage( 'RED.ico')

下面是一些代碼,工作:

class Application(Frame): 

    def __init__(self, master=None): 

    Frame.__init__(self, master) 
    self.pack() 
    self.createWidgets() 


    def createWidgets(self): 

    # ...other frame code.. works just fine. 
    self.OKBTN = Button(self) 
    self.OKBTN["text"] = "OK" 
    self.OKBTN["fg"] = "red" 
    self.OKBTN["command"] = self.ok_btn_func 
    self.OKBTN.pack({"side": "left"}) 

    # when I add the following the frame window is not visible 
    # The process is locked up such that I have to do a kill -9 
    self.statusFrame = Frame(self, bd=2, relief=RIDGE) 
    Label(self.statusFrame, text='Status:').pack(side=LEFT, padx=5) 
    self.statIcon = BitmapImage('data/ICON_LED_RED.ico') 
    Label (self.statusFrame, image=self.statIcon).grid() 
    self.statusFrame.pack(expand=1, fill=X, pady=10, padx=5) 

回答

0

問題是,您正在將網格和包裝混合在同一個容器中。這通常是GUI凍結的原因。問題在於,網格管理員將所有內容調整爲適合的大小,然後包管理器會看到變化並調整大小以適應。網格管理器看到一個變化,並調整大小以適應,並...

您正在使用包含標籤,其中包含文本「狀態:」,但具有圖像的標籤網格。

0

我用下面的代碼在tkinter中顯示一個圖標

class dialog(Tk): 
    def __init__(self): 
     Tk.__init__(self) 
     self.wm_iconbitmap('images/Icon.ico') 
+0

修改頂層小部件的圖標,而不是幀或幀的內容。 – 2011-03-19 08:06:20