pythonのtkinterでOptionMenuからA1またはB1を選択し、canvas上に円を自由に配置できるものを作りました。
いくつかの円を配置した後で、右上にあるRadiobuttonの図形選択モードで、
図形を選択→ドラッグで移動 ということをしたく、準備はできたのですが、
肝心なオブジェクトの取得方法と座標の変え方がわからず困っています。
どのようにすれば実現できるのでしょうか?
import tkinter as tk from tkinter import * import tkinter.filedialog List_A1=[] List_B1=[] window = tk.Tk() window.title('サンプル') frame1 = tk.Frame(window,bd=1,relief="ridge") frame1.grid(row=0, column=0,sticky='news') frame2 = tk.Frame(window,bd=1,relief="ridge") frame2.grid(row=2, column=0,sticky='news') Number = tk.StringVar() Number.set('A1') tk.OptionMenu(frame1, Number, 'A1', 'B1').pack(side=LEFT) Radio1=tk.Radiobutton(frame1, text="図形選択", value="図形選択モード", variable=Number,justify='right') Radio1.pack(side=RIGHT) cvs = tk.Canvas(frame2, height=600, width=1000, bg='white',bd=1,relief="ridge") cvs.grid(row=0, column=0,sticky='news') def lclick(event): checked = Number.get() if checked =="A1": cvs.create_oval(event.x-5, event.y-5, event.x+5, event.y+5,activefill = 'black',fill='red',tag="A1") cvs.create_text(event.x, event.y-10,text='A1') if checked =="B1": cvs.create_oval(event.x-5, event.y-5, event.x+5, event.y+5,activefill = 'black',fill='blue',tag="B1") cvs.create_text(event.x, event.y-10,text='B2') if checked =="図形選択モード": pass #クリックしたオブジェクトをドラッグで移動したい cvs.bind('<Button-1>', lclick) frame2.grid_columnconfigure(0,weight=1) frame2.grid_rowconfigure(0,weight=1) window.grid_columnconfigure(0,weight=1) window.grid_rowconfigure(2,weight=1) window.mainloop()
あなたの回答
tips
プレビュー