Jane
Jane

Reputation: 1

How to use write a loop for list append

from Tkinter import *
import csv
root = Tk()
def click(event):
    global x,y
    x, y= event.x,event.y
frame = Frame(root, width=100, height=100)
frame.bind("<Button-1>", click)
frame.pack()
root.mainloop()

row=[]
col=[]

row.append(x)
col.append(y)

Please! How do I write a loop, so that the two list can contain all x, and y that I clicked.

Upvotes: 0

Views: 70

Answers (2)

kyle
kyle

Reputation: 442

There's no reason to use an explicit loop here, one is already provided by root.mainloop, which calls your handler for you on every click event. Writing:

from Tkinter import *

root = Tk()

row = []
col = []

def click(event):
    row.append(event.x)
    col.append(event.y)

frame = Frame(root, width=100, height=100)
frame.bind("<Button-1>", click)
frame.pack()
root.mainloop()

will leave row and col populated with all of the x and y coordinates from each click once root.mainloop completes. There's also no reason to make x and y global: their global values will just always hold the values from the last call to click (or give you an undefined variable error if you never clicked at all).

Upvotes: 1

user5597655
user5597655

Reputation:

As it is, you are only appending x and y once. You can make the append happen on click event - no loop required!

from tkinter import *
import csv
root = Tk()
coords = []

def click(event):
    global x,y
    x, y= event.x,event.y
    coords.append([x, y])
    print("Clicked at: ", x, y)


frame = Frame(root, width=100, height=100)
frame.bind("<Button-1>", click)
frame.pack()
root.mainloop()

Upvotes: 0

Related Questions