计算按下tkinter按钮的次数

时间:2014-08-11 12:29:52

标签: python class button tkinter counter

我正在为一个学校项目写一个程序。这是一个在电影院预订门票的计划。我使用tkinter为用户创建一个gui来选择他们想要的座位。但是,我还需要计算所选座位数,打印门票总费用。但我被困在这里,我不知道如何继续(我刚刚学习了课程并且没有完全理解它们)。到目前为止,用户可以选择和取消选择按钮。这是使用的代码。

class buttonc:
    def __init__(self,master,x,ro):
        self.x = x
        self.ro = ro
        self.count = 0
        self.button = []
        self.button += [Button(root,text = self.x,background = "white",width= 2,height = 1,command = lambda:self.color())]
        self.click = 0

    def clicks(self,numm):
        self.click += numm
    def color(self):
        if self.count == 1:
            self.button[0].configure(background = "white")
            self.count = 0
            self.clicks(-1)
        elif self.count == 0:
            self.button[0].configure(background = "green")
            self.count = 1
            self.clicks(1)

    def counter(self):
        return self.click
    def pos(self):                
        self.button[0].grid(column = self.x+30,row = self.ro, padx = 14, pady = 14)
fo = open('tickets.txt','w')
for i in range(9):
    for k in range(25):
        b = buttonc(root,k+1,i+1)
        b.pos()
        fincount = str(b.counter())

root.mainloop()
fo.write(fincount)
fo.close()            

正如您所看到的,我已经使用计数器将值写入文本文件,但此值永远不会更新。任何帮助将不胜感激,并提前感谢您。

1 个答案:

答案 0 :(得分:2)

您是否正在查看文件" tickets.txt"并看到0?如果是这样,那并不奇怪。在进入主循环之前提取b.counter()

重新排列代码,如:

buttons = []

for i in range(9):
    for k in range(25):
        b = buttonc(root,k+1,i+1)
        b.pos()
        buttons.append(b)

root.mainloop()
fo = open('tickets.txt','w')
for b in buttons:
    fo.write(str(b.counter() + "\n")
fo.close()