2011-03-19 4 views
0

나는 여러 필드를 표시하는 파이썬 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

최상위 위젯의 아이콘을 수정합니다. 프레임이나 프레임의 내용이 아닙니다. –

관련 문제