Форум сайта python.su
0
Задача: нужно создать 100 индивидуальных кнопок в tkinter Python, чтобы при нажатии любой из них кнопка подкрашивалась в цвет (красный — если есть попадание по порядковому номеру в указанный список, серый — если не попал). Понятно, что вручную писать инструкции для каждой кнопки нет желания, нужно создать некий цикл.
Версия питона — 3.4
Ниже приведены инструкции для создания одной кнопки и привязки к ней функции, также указана ссылка на список порядковых номеров кнопок.
spisok=
from tkinter import *
root = Tk()
knopka1=Button(root,width=2,height=2,bg=»blue»,fg=»black»)
knopka1.grid(row=0,column=1)
def knopkinet1(event):
z=1
if z in spisok:
knopka1.configure(bg=»red»)
else:
knopka1.configure(bg=»gray»)
knopka1.bind(‘<Button-1>’,knopkinet1)
Офлайн
294
from tkinter import * def button_press(e): info=e.widget.grid_info() print('pressed button on: row {}, clmn {}'.format(info["row"], info["column"])) root = Tk() for i in range(25): for j in range(40): btn = Button(root,width=2,height=1,bg='blue',fg='black') btn.grid(row=i,column=j) btn.bind('<Button-1>',button_press) root.mainloop()
[code python][/code]
Отредактировано PEHDOM (Фев. 4, 2020 11:19:27)
Офлайн
0
Усложним задачу. Ниже приведен код по расстановке на созданном поле условных кораблей (один на 4 клетки, два на 3 клетки, три на 2 клетки, четыре на 1 клетку) для морского боя (игрок помечает зеленым цветом клетки(кнопки)). При нажатии соответствующей кнопки, ее координата (номер кнопки по порядку) добавляется в список. Проблема в том, как сделать подсвечивание кнопки при попадании и промахе компьютера (если выбранное компьютером число попадает в список).
from tkinter import *
root=Tk()
Korabl=
def ustanovka(event):
x=event.widget.grid_info()
y=event.widget.grid_info()
z=x+y*10
if len(Korabl)<20 and z not in Korabl:
Korabl.append(z)
event.widget.configure(bg=“green”)
for i in range(10):
for j in range(1,11):
knopka=Button(root,width=2,height=2,bg=“blue”,fg=“black”)
knopka.grid(row=i,column=j)
knopka.bind('<Button-1>',ustanovka)
root.mainloop()
Первый ход компьютера будет случайным:
spisok_new=list(range(1,101))
chod_komp=choice (spisok_new)
Офлайн
0
Может мне еще кто-нибудь подсказать, как вводить сообщения, чтобы при их отправке отступы оставались. Также следует заметить, что сайт обрезал значение моей переменной Korabl (значение было ). И еще я заметил, что PEHDOM указал код прямо как в среде разработки (с выделением цветом фрагментов кода в зависимости от их типа(назначения)). Как это можно сделать?
Офлайн
294
Офлайн
294
Konstantin1984+давайте так, я вам покажу как сделать подсвечивание кнопки если знать ее положение в сетке, а положение вычислять исходя из слкчайного значения от 0 до 100, а вы уж сами допилите что должно пдсвечивать при попадании, а что при промахе.
Проблема в том, как сделать подсвечивание кнопки при попадании и промахе компьютера (если выбранное компьютером число попадает в список).
from tkinter import * import random def shoot(): global count count +=1 if count > 5: return res = random.randint(0, 100) row = res//10 column = res%10 widget = root.grid_slaves(row=row, column=column)[0] widget.configure(bg='red') root.after(1000, shoot) root = Tk() for i in range(10): for j in range(10): btn = Button(root,width=2,height=1,bg='blue',fg='black') btn.grid(row=i,column=j) count = 0 root.after(1000 ,shoot) root.mainloop()
[code python][/code]
Отредактировано PEHDOM (Фев. 5, 2020 13:52:28)
Офлайн
0
Спасибо! Теперь программа работает.
Офлайн