我想制作一个程序,通过保存Text
来增加点击次数
例如,如果我多次按下一个按钮,它会打印我正确按下的次数,但我的问题是如果我按下另一个按钮它会启动它从第一个按钮的点击次数增加而不是从零
所以如果按下其他按钮
,请如何让它从零开始bttn_clicks=0
button_dict = {}
def showqado():
global button,data2
data2 = readqado()
for index, dat in enumerate(data2):
button = ttk.Button(master, text=dat[0],command=lambda dat=dat: update_count(dat))
button.grid(row=index+1, column=1,pady=0,padx=0)
button_dict[dat] = button
def update_count(x):
global bttn_clicks,my_text,price
my_text=StringVar()
for name in data2:
my_text = button_dict[x].cget('text')
bttn_clicks += 1
答案 0 :(得分:0)
如果我理解正确,问题是bttn_clicks
会因按下每个按钮而增加吗?
这是因为每个按钮" update_count
"函数是指global bttn_clicks
变量。
您可能希望在每个按钮上存储此变量的版本。
这是您的代码正在做的非常简化的版本:
count = 0
def update_count():
global count
count += 1
Button1 = update_count
Button2 = update_count
Button1()
Button1()
Button2()
count
#>>3
无论你在哪里调用" update_count"你都可以看到功能,只有一个count
正在进行。
相反,你需要多个。一种方法是通过课程。例如,你可以将一个像下面这样的Counter类附加到每个按钮,并分别调用每个Button的计数器。
class Counter:
def __init__(self): #sets count to zero when first initialized
self.count = 0
def increase(self):
self.count += 1 #function to increase the count by one
counter = Counter() #first instance
counter.increase()
counter.increase()
counter2 = Counter() #second instance
counter2.increase()
counter.count #first instance "count"
#>>2
counter2.count #second instance "count"
#>>1