从持久性函数(python3和tkinter)更新变量

时间:2018-08-03 22:10:08

标签: python tkinter global-variables registry

如何将一个函数的结果保存为全局变量以供以后在另一个函数中使用,或者由于该函数被运行而更新变量值呢?

我正在尝试在小型tkinter gui python 3应用程序上记录用户输入的文件路径。

    def sw_click():      # User clicks button
        sw_path1 tkinter.filedialog.askopenfilename(initialdir='C:/')  
        softwareP_label.config(text=sw_path1)
        print(sw_path1)     #  Just for logging
        return sw_path1

尝试在函数外部使用全局变量,变量的值始终为none或“”。

    sw_path1 = None    # Or using "" has same results

    def software_click():
        global sw_path11
        tkinter.filedialog.askopenfilename(initialdir='C:/')
        return sw_path1

使用一个简单的打印命令来检查变量值,在执行过程中完成了变量的打印,其值为None或“”。运行包含 print 的函数,将打印我试图获取的变量的正确路径。函数运行后打印变量,值返回为None或“”

无返回错误,“ NameError:未定义名称'sw_path1'”

我们非常感谢您的协助。谢谢

1 个答案:

答案 0 :(得分:1)

存在拼写错误:仅在函数全局语句中将变量称为sw_path11

您必须将filedialog的返回值分配给变量sw_path1

import tkinter.filedialog

sw_path1 = None    # Or using "" has same results

def software_click():
    global sw_path1
    sw_path1 = tkinter.filedialog.askopenfilename(initialdir='C:/')
    return sw_path1

software_click()
print(sw_path1)

当您将返回值分配给golbal变量时,您实际上也不需要返回它,尽管那样会更加Python化。

import tkinter.filedialog

sw_path1 = None    # Or using "" has same results

def software_click():
    return tkinter.filedialog.askopenfilename(initialdir='C:/')

sw_path1 = software_click()
print(sw_path1)