Независимое изменение цвета или нескольких фигур в tkinterPython

Программы на Python
Anonymous
Независимое изменение цвета или нескольких фигур в tkinter

Сообщение Anonymous »

Я хочу создать программу, в которой я мог бы переключать цвет множества квадратов щелчком мыши. Я могу создавать фигуры и переключать цвет.
Моя проблема заключается в большом количестве квадратов. Моя функция «изменить цвет» переключает цвет ВСЕХ квадратов одновременно. Я понимаю, что причина в том, что я использую один и тот же тег, но не знаю, как использовать несколько тегов с одной и той же функцией.
import tkinter
from tkinter import *
import math
from itertools import cycle

# Variables
shot_colors = ['red', 'blue']
scale = 4.04
radius = scale * 50
diameter = 2 * radius
chord_length = scale * 32.5
chord_angle = 37.93
chord_angle_compliment = 360 - chord_angle
x0 = 50
y0 = 50
x1 = x0 + diameter
y1 = y0 + diameter
start = 270 + 0.5 * chord_angle

# Define a function to change the state of the Widget
def change_color(*args, colors=cycle(shot_colors)):
canvas.itemconfig(tagOrId="shot", fill=next(colors))

root = Tk()
canvas = Canvas(root, width=1000, height=750)

# Create wafer shape, circle with flat oriented down
wafer = canvas.create_arc(x0, y0, x1, y1, start=start, extent=chord_angle_compliment, style=tkinter.CHORD, outline="black",
fill="gray", width=2)

# Create shot shapes, rectangle, this will be a for loop to create many shot(s)
shot1 = canvas.create_rectangle(257, 257, 277, 277, outline="black", fill="blue", tag="shot")
shot2 = canvas.create_rectangle(277, 277, 297, 297, outline="black", fill="blue", tag="shot")

# Change color of shot when clicked with mouse
canvas.tag_bind("shot", "", change_color)

canvas.pack()

root.mainloop()


Подробнее здесь: https://stackoverflow.com/questions/783 ... ependently

Вернуться в «Python»