2014-06-23 5 views
0

내가 확인란을 사용할 수있는 방법을 이해하는 데 도움이 필요 확인란을 선택하면이 프로그램의 일부를 해제하고 확인란을 해제하면 다른 부분을 끌 수 있습니다. 내 아이디어는 체크 박스가 켜져있을 때 addPercTip (self) 섹션이 켜져 있고 addRateTip이 꺼져 있고, 체크 박스가 꺼져있는 경우에도 마찬가지이다. PercTip을 끄고 RateTip을 켭니다. 내 문제는 바로 지금 내 계산에서 두 부분의 정보를 얻으려고하기 때문에 그 중 하나가 꺼져 있어야합니다. 어떤 도움이라도 대단히 감사 할 것입니다!체크 박스를 켜면 무언가를 켜고 끕니다.

from Tkinter import * 

class App(Tk): 
    def __init__(self): 
     Tk.__init__(self) 

     self.headerFont = ("Times", "16", "italic") 
     self.title("Restaurant Tipper") 
     self.addOrigBill() 
     self.addChooseOne() 
     self.addPercTip() 
     self.addRateTip() 
     self.addOutput() 


    def addChooseOne(self): 
     Label(self, text = "Check ON for % check OFF for rating!", 
      font = self.headerFont).grid(row = 2, column = 1) 
     self.checkVar = IntVar() 
     self.chkCheck = Checkbutton(self, variable = self.checkVar) 
     self.chkCheck.grid(row = 3, column = 1) 


    def calculate(self): 
     bill = float(self.txtBillAmount.get()) 
     percTip = self.percVar 
     rateTip = int(self.scrScale.get()) 

     tip = bill * percTip 
     self.lblTip["text"] = "%.2f" % tip 

     totalBill = tip + bill 
     self.lblTotalBill["text"] = "%.2f" % totalBill 

     if rateTip <= 2: 
      percTip = .10 

     elif 3 <= rateTip <= 4: 
      percTip = .12 

     elif 5 <= rateTip <= 6: 
      percTip = .15 

     elif 7 <= rateTip <= 8: 
      percTip = .17 

     elif 9 <= rateTip <= 10: 
      percTip = .20 

     else: 
      self.lblTotalBill["text"] = "Something is wrong" 

def main(): 
    app = App() 
    app.mainloop() 

if __name__ == "__main__": 
    main() 
+0

예제를 편집하여 확인란이 바뀌는 상태 (또는없는 경우 선언)를 선택하고 최종 출력 계산을 표시하면 좋은 대답을 제공하는 데 도움이됩니다. – aruisdante

+0

일반적으로이 문제는''percTip = self.percVar if self.checkVar else self.calcRate()''를 사용하면 쉽게 해결할 수 있지만,''calcRate()''는 등급 척도에 따라 백분율 팁을 반환합니다. – aruisdante

+0

나는 그 부분을 추가 할 필요가 있는지 모르겠다. 미안하지만, 나는 이것으로 첫 수업을 듣고있다. 그리고 나는 프로젝트를 넘어서고 자 노력 중이다. – BondyeLwa

답변

0

체크 버튼을 인스턴스화하면 명령 속성을 설정할 수 있습니다. 이것은 버튼이 체크 될 때마다 호출 될 함수입니다.

self.chkCheck(self, variable = self.checkVar, command = doStuff) 

def doStuff(self) 
    print 'doing stuff' 

편집 :

아래의 코멘트에 관해서는 :

def doStuff(self): 
    if self.checkVar.get() == 1: <<<1 is the 'checked value' 
     percTip = True 
     rateTip = False 

그러나, 실제로 그렇게 할 필요가 없습니다. calculate() 함수에서 self.checkVar.get()을 호출하고 1이면 1을 평가하고 0이면 (선택하지 않은 경우) 다르게 계산합니다.

+0

나는 아직도 내가 조금은 잃어버린 것 같아. 당신이 쓰는 것은 의미가 있지만, 내가 percTip을 켜고 싶다면 rate를 체크하면 상자를 체크하지만, percTip은 off되고 rateTip은 상자가 체크되어 있지 않을 때 켜져있다. "dostuff"명령은 무엇이 될까? – BondyeLwa

+0

수정 된 응답. – user3727843

관련 문제