Найти - Пользователи
Полная версия: Как генерировать переменные (объекты)?
Начало » Python для новичков » Как генерировать переменные (объекты)?
1
Konstantin1984+
Задача: нужно создать 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)
PEHDOM
 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
Konstantin1984+
Усложним задачу. Ниже приведен код по расстановке на созданном поле условных кораблей (один на 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)

Konstantin1984+
Может мне еще кто-нибудь подсказать, как вводить сообщения, чтобы при их отправке отступы оставались. Также следует заметить, что сайт обрезал значение моей переменной Korabl (значение было ). И еще я заметил, что PEHDOM указал код прямо как в среде разработки (с выделением цветом фрагментов кода в зависимости от их типа(назначения)). Как это можно сделать?
PEHDOM
Konstantin1984+
Как это можно сделать?
квадратные скобки съедает движек форума, поэтому код нужно заворачивать в теги
[code python][/code]
PEHDOM
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()
Konstantin1984+
Спасибо! Теперь программа работает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB