我想在我的GUI中有一个文本框和一个按钮,点击按钮后,它应该将文本存储在一个变量中,然后运行另一个文件。
我希望用户输入访问令牌,GUI应该将其保存在utilities.py的全局变量access_token中 但是在导入仅用于设置访问令牌的功能时,文件会运行,直到单击按钮才能运行。 所以,实际上文件运行了两次。
这是我的gui.py
from Tkinter import *
import Tkinter as tk
from utilities import setAccessToken
root = tk.Tk()
def callback():
setAccessToken(E1.get())
execfile('utilities.py')
E1 = Entry(root,bd = 5, width = 10)
E1.pack()
#similarly other GUI stuff with command = callback()
mainloop()
这是我的utilities.py
access_token = ""
def setAccessToken(token):
global access_token
access_token = token
print 'Running Utilities : access_token =', access_token
我的预期输出是:
Running Utilities: access_token = my access token
但我得到两次输出,即:
Running Utilities: access_token =
Running Utilities: access_token = my access token
在我导入文件时,有什么方法可以阻止文件utilities.py运行吗?
答案 0 :(得分:2)
导入python文件时,将执行其中的所有代码。这就是python的工作原理。为防止执行不需要的代码,我们应始终使用__name__
,如下所示:
access_token = ""
def setAccessToken(token):
global access_token
access_token = token
if __name__ == '__main__':
print 'Running Utilities : access_token =', access_token