【问题标题】:How to use write a loop for list append如何使用为列表追加编写循环
【发布时间】:2017-06-13 02:08:11
【问题描述】:
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。

【问题讨论】:

    标签: python list loops tkinter


    【解决方案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()
    

    一旦root.mainloop 完成,每次点击后,rowcol 将填充所有 x 和 y 坐标。也没有理由将 xy 设为全局:它们的全局值将始终保存上次调用 click 的值(或者如果您根本没有单击,则会给您一个未定义的变量错误)。

    【讨论】:

    • 非常感谢!
    【解决方案2】:

    实际上,您只附加 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多