Форум сайта python.su
0
День добрый
Я хочу изменять текстовое значение уже созданных кнопок 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()
Отредактировано Lextorn (Май 4, 2017 23:23:39)
Офлайн
294
вобще вариантов масса
например вот так
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()
[code python][/code]
Отредактировано PEHDOM (Май 5, 2017 11:42:53)
Офлайн
0
Благодарю!
Офлайн