Уведомления

Группа в Telegram: @pythonsu

#1 Май 4, 2017 23:20:29

Lextorn
Зарегистрирован: 2017-05-04
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение текста в виджете Button

День добрый
Я хочу изменять текстовое значение уже созданных кнопок 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)

Офлайн

#2 Май 5, 2017 11:36:32

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Изменение текста в виджете Button

вобще вариантов масса
например вот так

 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)

Офлайн

#3 Май 6, 2017 15:33:14

Lextorn
Зарегистрирован: 2017-05-04
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение текста в виджете Button

Благодарю!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version