2013-04-25 3 views
0

'HELLO'를 5 번 누르면 빨간색으로 바뀌려고합니다. 실용적인 것을 추가 할 때 아무 것도 추가하지 않습니다. 이것은 코드입니다.python에서 GUI를 사용하여 변수를 사용하는 방법 3

from tkinter import * 
    class application(Frame): 
    global t 
    t=1 
    def info(self): 
     print ("test") 
    global t 
    t=t+5 

    def createWidgets(self): 
    global t 
    t=t 
    self.exet= Button(self) 
    self.exet["text"] = "QUIT" 
    self.exet["fg"] = "red" 
    self.exet["command"] = self.quit 

    self.exet.pack({"side": "left"}) 

    self.hi = Button(self) 
    self.hi["text"] = "HELLO", 
    if t == 5: 
     self.hi["fg"] = "red" 

    self.hi["command"] = self.info 
    self.hi.pack({"side": "left"}) 

    def __init__(self, master=None): 
    Frame.__init__(self, master) 
    self.pack() 
    self.createWidgets() 

누구에게 감사합니다!

+1

들여 쓰기가 모두 끝났습니다. 청소 해 주실 수 있습니까? –

답변

1

여기에 몇 가지 문제가 있습니다. 첫째, 전역 변수를 사용하고 함수의 범위 내에 포함합니다. 이 대신 인스턴스 변수 (self.t 또는 더 읽기 쉽도록 self.counter)를 사용해야합니다. 둘째로, createWidgets의 카운터 값을 확인하고 있습니다.이 값은 __init__ 메서드에서 한 번만 호출됩니다. 버튼의 이벤트 핸들러 함수에서 값을 늘리고 확인해야합니다.

class application(Frame): 

    def info(self): 
     self.counter += 1 
     print(self.counter) 
     if self.counter == 5: 
      self.hi["fg"] = "red" 

    def createWidgets(self): 
     self.counter = 0 
     self.exet= Button(self) 
     self.exet["text"] = "QUIT" 
     self.exet["fg"] = "red" 
     self.exet["command"] = self.quit 
     self.exet.pack({"side": "left"}) 

     self.hi = Button(self) 
     self.hi["text"] = "HELLO", 
     self.hi["command"] = self.info 
     self.hi.pack({"side": "left"}) 

    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.pack() 
     self.createWidgets() 
관련 문제