
前提
tkinterで図形の色をまとめて変更するプログラムを作りたいです。
色を変更したい図形IDをリストに入れるやり方などを試してみましたが、うまくいきません。
初心者のため、ご教授いただけますと幸いです( ; ; )
実現したいこと
動作の流れとしては以下のことを実現したいです。
①「図形を選択」ボタンを押す
②色を変更したい図形を複数選択(この時点では色は変わらない)
③「図形の色を変更」ボタンを押すと、選択した図形の色がまとめて一気に変更される
該当のソースコード
from cProfile import label
import tkinter as tk
def create_zukei(x,y):
id = canvas.create_rectangle(x, y, x + 60, y + 40,fill="snow")
return x,y
def btn1_click():
global selection,label
label = tk.Label(app, text='選択中')
label.pack()
selection=[]
def zukei_click(event):
x, y = event.x, event.y
id = canvas.find_closest(x, y)
selection.append(id)
canvas.tag_bind(id, "<ButtonPress>", zukei_click)
def btn2_click():
label.pack_forget()
canvas.itemconfig(selection,fill = "#99FF66")
def main():
global canvas,app,entity1,entity2,entity3
app = tk.Tk()
app.title(u"Software Title")
canvas = tk.Canvas(app, width = 500, height = 300,bg="white")
btn1 = tk.Button(app, text='図形を選択', command=btn1_click)
btn2 = tk.Button(app, text='図形の色を変更', command=btn2_click)
btn1.place(x=0, y=0)
btn2.place(x=100, y=0)
entity1 = create_zukei(40, 150)
entity2 = create_zukei(240, 50)
entity3 = create_zukei(420, 150)
canvas.pack()
app.mainloop()
if name == "main":
main()

0 コメント