按下每个按钮的按钮点击次数增加

时间:2018-05-14 18:53:42

标签: python tkinter

我想制作一个程序,通过保存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

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