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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (110)

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

我试图在一个小的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或“”

None的返回错误,“NameError:name'sw_path1'未定义”

非常感谢任何帮助。谢谢

提问于
用户回答回答于

存在拼写错误: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变量时,您实际上并不需要返回它,尽管这将更加pythonic。

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)

扫码关注云+社区

领取腾讯云代金券