Hi, I was wondering if it is possible to make a similar drawing tool with basic functionality to draw lines, circles or square with python canvas. I know how to draw them with canvas very well but the problem is the way I am getting my mouse positions (initial& final). I did not think it would have been a difficult work but I have spent 3-4 hours and out of luck. I get my functions to give me the mouse position while moving, when pressed, original position or current position. But don't know how to store them as a value. Should I write a function to store them inside of it. I don't know because I had tried doing just that recursively and failed and unfortunately I erased that part in the process. I am not a genius and is not used to tkinter very well (to use command function or anything) to store a value. Here is my code. I kind of left some reduntant codes to show my try and fail situation. Thus my code is quite long.
__author__ = 'WHOM ISAC' import tkinter as tk from tkinter import * import sys #import time #app GUI app=tk.Tk() app.title("MSPAINT By Shams") app.geometry('400x450') # show_event=app.winfo_pointerxy() (X,Y)=show_event #Mouse events def original_mouse_position(): show_event=app.winfo_pointerxy() (X,Y)=show_event print("The mouse are on: X:{0} Y:{1}".format(X,Y)) label0=Label(frame1,text="Original Position", relief=RAISED).pack(side=TOP,anchor="ne") label=Label(frame1,text="X Y",relief=GROOVE).pack(side=BOTTOM, anchor="ne") label1=Label(frame1,text=str(show_event), relief=SUNKEN).pack(side=BOTTOM, anchor="ne") return # Continuous Mouse Movement def motion(event): x, y = event.x, event.y currentMousePosition=(x,y) print('MousePos: X:{0} Y:{1}'.format(x, y)) return currentMousePosition ###app.bind('<Motion>', motion)-->WORKS but disabled from running #Mouse Update And Position def mouse_position(): show_event=app.winfo_pointerxy() (X,Y)=show_event if '<Motion>'!=show_event : show_event=app.winfo_pointerxy() (X,Y)=show_event print("Current mouse are on: X:{0} Y:{1}".format(X,Y)) label2=Label(frame1,text=str(show_event), relief=GROOVE).pack(side=RIGHT) #app.bind(mouse_position(),'Show') #Mouse pressed def Mouse_pressed(event): print("Right Click has been pressed.") initialpos=(X,Y) initialpos=app.winfo_pointerxy() #finalpos=motion(event) """ while initialpos!=(0,0): initialpos=app.winfo_pointerxy() #Explain me why it does not work.Should not it work?it's logical to do/call recursive finalpos=(0,0) if initialpos !=finalpos: if Mouse_pressed(event): finalpos=app.winfo_pointerxy() print(initialpos) """ print(initialpos) return initialpos #Mouse coordination """ initial_pos=Mouse_pressed print(initial_pos) time.sleep(1) final_pos=Mouse_pressed print(final_pos) """ #SOME WIDGETS: lbl0=Label(app, text="This is a program that I have build Using Python. Please Use it.", fg='blue', font='Times 9 bold').pack(fill=BOTH,anchor='nw') ####Frame for Original Mouse Position frame1=Frame(app, bg='red', width=2).pack(fill=BOTH,anchor='ne') #Canvas tools """CanvasFrame=Frame(app, width=300, height=200)""" canvas_GUI=Canvas(app, height=300, width=300, bg='white') #canvas_draw_tool=canvas_GUI.create_line(20,0,100,200) canvas_draw_tool=canvas_GUI.create_line(20,0,(X,Y)) #I know it won't work unless I could get the initial position and final position but I don't have a clue ##CanvasFrame Binding canvas_GUI.bind("<Button-1>", Mouse_pressed) canvas_GUI.bind('<Motion>', motion) canvas_GUI.pack() #QUIT Function def quit(): print("Quit function has been called. So I am quitting.") sys.exit() #CLEAR Function def clear(): canvas_GUI.delete("all") print("Everything has been flushed.") #Buttons Button(app, text='Quit', command=quit).pack(anchor='sw',side=LEFT) Button(app, text='Clear', command=clear).pack(anchor='sw',side=LEFT) Button(app, text='Show', command=mouse_position).pack(anchor='sw',side=LEFT) """ initial_pos=Label(app,text="Initial pos:{}".format(app.winfo_pointerxy())).pack() final_pos=Label(app,text="Final pos:{}".format(app.winfo_pointerxy())).pack() canvas_GUI.bind(Mouse_pressed,initial_pos) canvas_GUI.bind(Mouse_pressed,final_pos) """ #Mainloop running original_mouse_position() app.mainloop() _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor