总体上来说,我仍然对Python和编程尚不陌生,但是作为一种学习更多Python的方法,并且只是修改了一些Windows Registry数据,我开始研究非常简单的tkinter和Python3数据提取器。
我一直无法从函数中获取输出,以某种方式存储为变量以供以后使用,有时会重复使用。只有几个按钮可以找到路径,保存文件路径,并且我想在另一个函数中使用该文件路径来从文件中获取数据。
def sw_click():
sw_path1 = tkinter.filedialog.askopenfilename(initialdir='C:/Users/%s')
swP_label.config(text=swpath1)
return sw_path1
然后,我想将返回数据(sw_path1)用作另一个系统函数,该数据只是本地系统路径,稍后将被调用。例如:
def swpull_click():
swinfo = *function_pullkey (sw_path1) #Using another function
Return sw_data # again as a variable for later use
所有功能都是分开工作的,但是要使一个功能返回另一个功能以供以后使用一直是一个障碍。我尝试使用另一个变量(例如
)来存储它Var1 = sw_path1
但这会成为函数本身之外的未解决的引用
任何帮助将不胜感激。谢谢
****更新 在函数外部添加变量,例如:
sw_path1 = None
def software_click():
global sw_path1
tkinter.filedialog.askopenfilename(initialdir='')
softwareP_label.config(text=sw_path1)
return sw_path1
不存储变量,一旦获得变量,则始终为None。
答案 0 :(得分:0)
您需要将变量sw_data设置为全局变量。
当前,它是一个功能级别变量。
为此,请在函数外部声明变量。
然后,您可以在任何其他函数中调用sw_path1
希望这会有所帮助!
答案 1 :(得分:0)
在模块级别定义变量。如果在sw_click函数中设置了该值,则该值仍可以在swpull_click函数中使用。
sw_path1 = None
def sw_click():
# the global keyword stats that a module level variable can be set inside a function
global sw_path1
sw_path1 = tkinter.filedialog.askopenfilename(initialdir='C:/Users/%s')
swP_label.config(text=swpath1)
return sw_path1
def swpull_click():
swinfo = *function_pullkey (sw_path1) #Using another function
return sw_data # again as a variable
答案 2 :(得分:0)
在函数执行之前将变量设置为None允许使用全局设置将其调用到函数中。通过在函数内使用全局变量,只要在函数内更新该变量,先前设置为“无”的全局变量将被更新。然后将其存储以供以后使用,除非另一个功能或过程将其清除或替换。
http://project.example.com/webservice/rest/server.php?wstoken=mytoken&wsfunction=core_user_update_users&users[0][id]=1392&customfields=(array(phone1=>123456789))
使用的三个打印功能(function1中的2个,function2中的1个)将按以下顺序返回:
import tkinter
from tkinter import filedialog
root = tkinter.Tk()
# Setting a variable to none, that can be used, updated, etc.
var1 = None
# So here a user would select their file, which would update var 1 from None, to the results
# This can be handy for validations using if statements to show the variable has not been updated
def function_1():
global var1 # Must be set to global in the function to be able to access var1 and update
print(var1)
var1 = tkinter.filedialog.askopenfilename(initialdir='C:')
print(var1)
# Updating the variable in the manner above allows for it to be updated repeatedly
# Now that updated variable can be used in function2
def function_2():
print(var1)
button1 = tkinter.Button(root, text="get the path", command=function_1)
button2 = tkinter.Button(root, text="do something with it", command=function_2)
button1.pack()
button2.pack()
root.mainloop()
删除预设None
C:/Windows/regedit.exe
C:/Windows/regedit.exe
将导致脚本运行,但是在调用函数1时,将出现NameError Var1 = None
从function1中删除NameError: name 'var1' is not defined
,并且var1仍设置为None之外,脚本仍将运行,但是使用function1时,它将在变量的第一行中抛出global var1
错误。功能。