如何在全局中使用局部变量?

时间:2017-07-20 02:11:02

标签: python csv tkinter global local

所以我试图在python中用csv写行,我的代码看起来像这样。但它不会写,因为这些变量是本地的?我该怎么做?谢谢!没有错误显示,它在csv中没有写入行。 当我在mac上的pycharm中运行它时,它可以正常工作,但是当我在windows上创建一个exe后,它就不会写行。

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))

1 个答案:

答案 0 :(得分:1)

这是return语句的用途:

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))

或者如果你想要花哨:

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

当然,您需要先定义一个事件!