我正在为一个学校项目写一个程序。这是一个在电影院预订门票的计划。我使用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()
正如您所看到的,我已经使用计数器将值写入文本文件,但此值永远不会更新。任何帮助将不胜感激,并提前感谢您。
答案 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()