我需要帮助,了解如何使用复选框我已经在选中时关闭了程序的一部分,并在复选框关闭时关闭另一部分。我的想法是,当复选框打开时,我希望打开addPercTip(self)部分并关闭addRateTip,反之亦然,当复选框关闭时。 PercTip off和RateTip on。我现在的问题是,在我的计算中,它试图从两个部分获取信息,因此其中一个需要关闭。任何帮助都会非常感激!
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 :(得分:0)
实例化一个checkbutton时,可以设置一个命令属性。这是一个只要选中按钮就会调用的函数。
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则进行评估,如果为0(未选中),则进行不同的评估等。