Нарисуйте таблицу с tkinter, где ячейки должны быть раскрашены по клику и извлечены с помощью кода выбора - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок в tkiinter, и мне не удалось найти решение моей проблемы в интернете.

Прежде всего мне нужно нарисовать таблицу с треугольниками, похожими на те, что на этой картинке (https://www.tilelook.com/system/tile_picture/resource/4973584/d3d_default_RE04MC017.png).

Затем пользователь может выбрать цвет где-нибудь (из списка или чего-то подобного) и изменить цвет треугольника, нажав на него. Самое главное, что мне нужно получить эту информацию в коде (для каждого trinagle мне нужно знать, какой цвет выбрал пользователь).

Edit: Я до сих пор не написал никакого кода, но я знаю, как рисовать таблицу с помощью Canvas, и более или менее, как обрабатывать раскраску. Сложная часть для меня - как получить информацию в коде, я думаю, что это похоже на рассмотрение каждого элемента таблицы как независимого объекта или чего-то в этом роде, но я понятия не имею, как это сделать.

1 Ответ

2 голосов
/ 17 апреля 2019

Я не дам вам полного решения, но вы можете найти следующую полезную отправную точку

import tkinter as tk
from random import choice

def getRandomColor():
    return choice(['red','blue','green','yellow','white','goldenrod'])

def click(event):
    print(vars(event))
    item = event.widget.find_withtag('current')
    event.widget.itemconfig(item,fill=getRandomColor())

root = tk.Tk()
root.grid()

c = tk.Canvas(root,width=300,height=300,bg='black')
c.grid()
c.create_polygon(0,0,100,0,50,100,fill='blue',tag='tri_1')
c.create_polygon(100,0,50,100,150,100,fill='yellow',tag='tri_2')
c.bind('<Button-1>',click)

root.mainloop()

Это создаст два треугольника. Если вы нажмете на треугольник, он изменится на случайный цвет (из небольшого списка цветов). Это даст вам некоторые идеи о а. рисование полигонов на холсте tkinter б. привязка функции к клику с. изменение свойств элемента холста

Надеюсь, вы найдете это полезным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...