为什么我的python全局变量没有更改?

时间:2020-01-08 08:50:29

标签: python tkinter

我需要帮助以了解为什么我的python变量没有更改?

代码如下:

from tkinter import filedialog
from tkinter import *

selectedRootFolder = ""  #<-------------------------------------here is the variable declared

# get any folder to be a root folder
def add_dir():
    root = Tk()
    root.withdraw()
    dirname = filedialog.askdirectory(parent=root,initialdir="/",title='Please select a directory')
    selectedRootFolder = dirname
    print("Here: " + selectedRootFolder)#<-----------------------here is the variable changed

# print the root folder 
def print_root_dir_path():
    print (selectedRootFolder)  #<-----------------------------here is the variable empty -> =""

# in case a wrong number is taken
def invalid():
    print("---------------------")
    print ("INVALID CHOICE!")
    print("---------------------")

# exit program
def exit_prog():
    print ("Thank you, come back soon!")
    exit()

# define the menu options
menu = {"1":("Choose Directory:", add_dir),
    "2":("Print Root Directory Path",print_root_dir_path),
    "9":("Exit",exit_prog)
   }

while True:    
    # list the menu
    for key in sorted(menu.keys()):
        print (key + ":" + menu[key][0])

    # pick a number 
    print("---------------------")
    ans = input("Make A Choice: ")
    print("---------------------")

    #get the number, if none, call invalid function
    menu.get(ans,[None,invalid])[1]()

这只是脚本的一部分,但是它应该能够显示我的问题,即当我选择选项1来选择目录时,它会成功,并且会打印出selectedRootFolder,但是当我选择选项2之后,打印的值与开始时声明的一样,为空。

我不明白为什么会这样,您能帮我吗?

谢谢。

编辑1:

已更改:

selectedRootFolder = print(dirname)

收件人:

selectedRootFolder = dirname
print("Here: " + selectedRootFolder)

1 个答案:

答案 0 :(得分:3)

使用global

例如:

selectedRootFolder = ""

def add_dir():
    global selectedRootFolder
    selectedRootFolder = "Update"

add_dir()    
print(selectedRootFolder)

回复:https://repl.it/repls/SoreLankyAttributes

相关问题