Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2020 09:48:22

Konstantin1984+
Зарегистрирован: 2020-02-04
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

Как генерировать переменные (объекты)?

Задача: нужно создать 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)

Офлайн

#2 Фев. 4, 2020 11:17:47

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

Как генерировать переменные (объекты)?

 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()

Konstantin1984+ а вы часом не сапера собрались пилить? тога МБ вам будет интересно вот это
http://itnotesblog.ru/note.php?id=10%2C



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 4, 2020 11:19:27)

Офлайн

#3 Фев. 5, 2020 08:45:19

Konstantin1984+
Зарегистрирован: 2020-02-04
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

Как генерировать переменные (объекты)?

Усложним задачу. Ниже приведен код по расстановке на созданном поле условных кораблей (один на 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)

Офлайн

#4 Фев. 5, 2020 08:53:15

Konstantin1984+
Зарегистрирован: 2020-02-04
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

Как генерировать переменные (объекты)?

Может мне еще кто-нибудь подсказать, как вводить сообщения, чтобы при их отправке отступы оставались. Также следует заметить, что сайт обрезал значение моей переменной Korabl (значение было ). И еще я заметил, что PEHDOM указал код прямо как в среде разработки (с выделением цветом фрагментов кода в зависимости от их типа(назначения)). Как это можно сделать?

Офлайн

#5 Фев. 5, 2020 12:41:04

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

Как генерировать переменные (объекты)?

Konstantin1984+
Как это можно сделать?
квадратные скобки съедает движек форума, поэтому код нужно заворачивать в теги
[code python][/code]



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 5, 2020 16:56:47)

Офлайн

#6 Фев. 5, 2020 13:50:59

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

Как генерировать переменные (объекты)?

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)

Офлайн

#7 Фев. 6, 2020 11:45:52

Konstantin1984+
Зарегистрирован: 2020-02-04
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

Как генерировать переменные (объекты)?

Спасибо! Теперь программа работает.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version