2017-06-13 103 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) 

请!我如何编写循环,以便这两个列表可以包含我单击的所有x和y。如何使用为循环列表追加写入循环

回答

0

就这样,你只能追加x和y一次。您可以使点击事件发生追加 - 无需循环!

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

没有理由在这里使用一个显式循环,一个已经被root.mainloop,它的每次点击事件调用您的处理程序为您提供。写作:

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

将离开rowcol填充所有的X和Y从每点击一次root.mainloop完成坐标。也没有理由让xy为全局:它们的全局值将始终保持最后一次调用的值为click(或者如果您从未单击过,则会给出未定义的变量错误)。

+0

非常感谢! –