2017-06-13 99 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

非常感謝! –