2017-06-13 2 views
0
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) 

Bitte! Wie schreibe ich eine Schleife, so dass die beiden Listen alle x und y, auf die ich geklickt habe, enthalten können.Wie schreibe ich eine Schleife für die Liste append

Antwort

0

Wie es ist, fügen Sie x und y nur einmal an. Sie können das Anhängen auf Click-Ereignis ausführen - keine Schleife erforderlich!

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() 
1

Es gibt keinen Grund, hier eine explizite Schleife zu verwenden, wird ein bereits von root.mainloop versehen, die Handler auf jedem Klick-Ereignis für Sie anruft. Schreiben:

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() 

verlassen row und col bevölkert mit all der x- und y-Koordinaten von jedem Klick einmal root.mainloop abgeschlossen ist. Es gibt auch keinen Grund, x und y global zu machen: ihre globalen Werte werden nur die Werte vom letzten Aufruf von click enthalten (oder geben Ihnen einen undefinierten Variablenfehler, wenn Sie überhaupt nicht geklickt haben).

+0

Vielen Dank! –

Verwandte Themen