2017-07-20 2 views
-1

Donc j'essaye d'écrire des lignes dans csv en python, et mon code ressemble à ça. Mais il n'écrira pas parce que ces variables sont locales? Comment fait-on ça? Je vous remercie! Il n'y a pas d'erreur, il n'y a pas de ligne dans csv. Et quand je le lance dans pycharm sur mac, ça marche, mais après en avoir fait un exe sur windows, ça n'écrit pas de ligne.Comment faire une variable locale utilisée dans global?

types=[] 
row=[] 
col=[] 
image_number=[] 
def click(event): 
    global rectangle 
    global image_list1 
    types.append(v.get()) 
    row.append(event.x) 
    col.append(event.y) 
    filename = image_list1[0] 
    image_number.append(filename) 
    x1, y1 = (event.x -3), (event.y- 3) 
    x2, y2 = (event.x + 3), (event.y + 3) 
    rectangle=w.create_rectangle(x1, y1, x2, y2,fill=color[v.get()-1],outline="") 
if image_length: 
    root.tk() 
    w.bind("<Button-1>", click) 
    root=mainloop() 
    d.writerows(zip(image_number, types, row, col)) 

Répondre

1

C'est ce que la déclaration return est pour:

types=[] 
row=[] 
col=[] 
image_number=[] 
def click(event): 
    global rectangle 
    global image_enum 
    global image_list1 
    types.append(v.get()) 
    row.append(event.x) 
    col.append(event.y) 
    filename = image_list1[0] 
    image_number.append(filename) 
    return (image_number, types, row, col) 
if image_length: 
    image_number, types, row, col = click(event) 
    d.writerows(zip(image_number, types, row, col)) 

Ou si vous voulez être de fantaisie:

if image_length: 
    d.writerows(zip(*click(event))) 

Bien sûr, vous avez besoin d'un événement défini en premier!

+0

Vous pouvez également écrire 'd.writerows (zip (* click (event)))' – Zizouz212

+0

Yup, était sur le point d'éditer cela dans :) – perigon

+0

Et vous me battre de deux secondes ...: P – Zizouz212