Найти - Пользователи
Полная версия: Изменение текста в виджете Button
Начало » Python для новичков » Изменение текста в виджете Button
1
Lextorn
День добрый
Я хочу изменять текстовое значение уже созданных кнопок button по нажатию левой кнопки мыши (как, надеюсь всем известном, сапере), но проблема в том, что все кнопки создаются циклом for и переменные кнопок затираются
Как мне идентифицировать кнопку при нажатии?

from tkinter import *
root = Tk()
def vv(event):
for i in range(9):
if btn==test[i]:
for j in range(1,10):
if test[i]['text']==j and j!=9:
test[i]['text']=j+1
break
elif test[i]['text']==j and j==9:
test[i]['text']=1
test=[]
for i in range(9):
if i<5:
btn = Button(root, text=1)
btn.bind("<Button-1>", vv)
test.append(btn)
btn.pack()
else:
btn = Button(root, text=2)
btn.bind("<Button-1>", vv)
test.append(btn)
btn.pack()
print(test)
root.mainloop()

Вот моя наработка, но тут изменяется только последняя кнопка, т.к. за ней осталось сохранение переменной
PEHDOM
вобще вариантов масса
например вот так
 from tkinter import *
root = Tk()
class MyButton(Button):
    def __init__(self, *args, **kwargs):
        super(MyButton, self).__init__(*args, **kwargs)
        self.bind("<Button-1>", self.vv)
    def vv(self, event):
        text = int(self['text'])
        self['text'] = text+1
test=[]
for i in range(9):
    if i<5:
        btn = MyButton(root, text=1)
        test.append(btn)
        btn.pack()
    else:
        btn = MyButton(root, text=2)
        test.append(btn)
        btn.pack()
print(test)
root.mainloop()

или так:

 from tkinter import *
root = Tk()
def vv(event):
    btn = event.widget
    text = int(btn['text'])
    btn['text']=text+1
test=[]
for i in range(9):
    if i<5:
        btn = Button(root, text=1)
        btn.bind("<Button-1>", vv)
        test.append(btn)
        btn.pack()
    else:
        btn = Button(root, text=2)
        btn.bind("<Button-1>", vv)
        test.append(btn)
        btn.pack()
print(test)
root.mainloop()
Lextorn
Благодарю!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB