Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使局部变量用于全局变量?_Python_Csv_Tkinter_Global_Local - Fatal编程技术网

Python 如何使局部变量用于全局变量?

Python 如何使局部变量用于全局变量?,python,csv,tkinter,global,local,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(

所以我尝试用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))
types=[]
行=[]
col=[]
图像_编号=[]
def单击(事件):
全局矩形
全局图像列表1
type.append(v.get())
行追加(event.x)
列追加(事件y)
文件名=图像\u列表1[0]
图像号。追加(文件名)
x1,y1=(事件x-3),(事件y-3)
x2,y2=(事件x+3),(事件y+3)
矩形=w.创建矩形(x1,y1,x2,y2,fill=颜色[v.get()-1],outline=”“)
如果图像长度:
root.tk()
w、 绑定(“,单击)
root=mainloop()
d、 writerows(zip(图像编号、类型、行、列))

这就是
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)))

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

你也可以只写
d.writerows(zip(*点击(事件))
然后你就赢了我两秒…:我想知道,返回的
image\u number
是否应该是
filename
。否则,您每次都会将一个不断增长的列表传递给
zip
。这里可能有一些问题(比如,对于初学者来说,没有使用的全局变量)。它仍然不起作用,奇怪的是它在ios上起作用,但在windows上不起作用。有人知道为什么吗?