使用Tkinter的Python中未使用和未定义的变量,如何解决?

时间:2019-06-25 03:29:14

标签: python-3.x

基本上,我在这里遇到的是尝试在Python中定义函数时,我无法使用在运行主函数之前设置的变量。听起来模棱两可,但是一旦看到代码,它就会变得有意义。

它在未定义为函数的情况下有效,但这无济于事,因为我需要将其用作tkinter gui中的函数。

如果在运行exportJSON函数之前导入csv和json,我希望代码能够运行。我收到错误消息:NameError:以这种方式执行时未定义名称'csvFilePath'。

def importCSV():
        csvFilePath = filedialog.askopenfilename()
def importJSON():
        jsonFilePath = filedialog.askopenfilename()

#Change fieldname
def exportJSON():
        data = {}
        with open(csvFilePath, 'r') as csvFile:
                csvReader = csv.DictReader(csvFile)
                for csvRow in csvReader:
                        ProfileName = csvRow["ProfileName"]
                        data[ProfileName] = csvRow
        with open(jsonFilePath, 'w') as jsonFile:
                jsonFile.write(json.dumps(data))

1 个答案:

答案 0 :(得分:0)

通过在定义变量名之前简单地将global放在变量名之前,解决了该特定示例。例如:

def importCSV():
        global csvFilePath
        csvFilePath = filedialog.askopenfilename()
def importJSON():
        global jsonFilePath
        jsonFilePath = filedialog.askopenfilename()