число нажатий кнопок в Python увеличивается при каждом нажатии кнопки - PullRequest
0 голосов
/ 14 мая 2018

Я хочу сделать программу, которая увеличивает количество кликов, сохраняя на 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 голосов
/ 14 мая 2018

Если я правильно понимаю, проблема в том, что 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, как показано ниже, к каждой кнопке и вызывать счетчик каждой кнопки отдельно.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...