如何使用为循环追加写一个循环

时间:2017-06-13 02:08:11

标签: python list loops tkinter

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。

2 个答案:

答案 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完成后,

将为colroot.mainloop填充每次点击的所有x和y坐标。也没有理由让xy全局:它们的全局值将始终保持上次调用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()