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 :(得分: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()
在row
完成后,将为col
和root.mainloop
填充每次点击的所有x和y坐标。也没有理由让x
和y
全局:它们的全局值将始终保持上次调用click
的值(如果您从未点击过,则会给出未定义的变量错误在所有)。
答案 1 :(得分: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()