Форум сайта python.su
Хотел создать поле 10 на 10, чтобы при нажатии на кнопку она дизейблилась (DISABLED), но номер кнопки принимает значение последнего ренджа (range) в цикле, помогите пронумеровать кнопки, типо 0 1, 0 2, и т.д
Вот код:
import tkinter as tk win = tk.Tk() win.geometry('600x600+400+80') win.resizable(False, False) def X_O(x,y): print(x,y) def FuncF(): Man.pack_forget() for i in range(10): for j in range(10): tk.Button(win, text = ' ',command=lambda:X_O(i,j)).grid(row=j,column=i,stick='nswe') win.grid_columnconfigure({j}, minsize = 60) win.grid_rowconfigure({j}, minsize = 60) Man = tk.Button(win, text = ' ', command = FuncF, font = ('Arial','25','bold italic'), relief = tk.RAISED, bd = 10, activebackground = '#8B008B') Man.pack(pady = 20)
Отредактировано Twist (Дек. 12, 2021 11:32:25)
Офлайн
О чем вы подумали,когда увидели свой представленный код без отступов?
import tkinter as tk win = tk.Tk() win.geometry('600x600+400+80') win.resizable(False, False) def X_O(e): print(e.widget.grid_info()['row'],e.widget.grid_info()['column']) def FuncF(): Man.pack_forget() for i in range(10): for j in range(10): b = tk.Button(win, text = ' ') b.bind('<Button-1>',X_O) b.grid(row=j,column=i,stick='nswe') win.grid_columnconfigure({j}, minsize = 60) win.grid_rowconfigure({j}, minsize = 60) Man = tk.Button( win, text = '', command = FuncF, font = ('Arial','25','bold italic'), relief = tk.RAISED, bd = 10, activebackground = '#8B008B') Man.pack(pady = 20 ) win.mainloop()
Отредактировано xam1816 (Дек. 11, 2021 21:36:01)
Офлайн
xam1816Прошу прощения, не обратил внимание, просто скопировал и вставил, исправлю (подскажите как это сделать, не нашел нужную функцию в редактировании, код написан сам с отступами), появился еще вопрос, а можно ли как-нибудь обратится к кнопки, чтобы при нажатии она блокировалась (DISABLED), ведь вроде бы мы создаем кнопку, а имя ей не присваиваем?
О чем вы подумали,когда увидели свой представленный код без отступов?
Отредактировано Twist (Дек. 12, 2021 11:11:58)
Офлайн
Twistкод вставлять в теги в редакторе сообщений рядом со смайлом
подскажите как это сделать, не нашел нужную функцию в редактировании, код написан сам с отступами
Офлайн
xam1816изменить
чтобы при нажатии она блокировалась (DISABLED), ведь вроде бы мы создаем кнопку, а имя ей не присваиваем
def X_O(e): if e.widget['state'] != 'disabled': e.widget.config(state='disabled',relief='flat') print(e.widget.grid_info()['row'],e.widget.grid_info()['column'])
Офлайн
xam1816Спасибо, очень помогло, не объясните немного, я правильно понял, что b.bind('<Button-1>',X_O) мы назначаем кнопке функцию и значение ‘е’, передаваемое функции def X_O(e): это типо и есть название кнопки? Почему должно быть в b.bind('<Button-1>',X_O), Button-1?
Отредактировано Twist (Дек. 12, 2021 11:44:01)
Офлайн
Twistфункции передается событие (event по-английски),в нем есть указание на виджет с которым произошло событие
‘е’, передаваемое функции def X_O(e): это типо и есть название кнопки
Twist<Button-1> это номер кнопки мыши,на которую будет реагировать виджет.
Почему должно быть в b.bind('<Button-1>',X_O), Button-1?
Офлайн
xam1816Теперь все понятно, огромное спасибо за помощь!
Офлайн
xam1816Я e-mail тебе отправил, не знаю получил ли, не знаю увидишь ли здесь, но попрошу, помоги удалить теперь эти кнопки, по нажатию, ну допустим пробела, буду очень благодарен!)
Офлайн