1

我想在我的 GUI 中有一个文本框和一个按钮,单击按钮时,它应该获取文本并将其存储在其他文件的变量中并运行其他文件。

我希望用户输入访问令牌,并且 GUI 应将其保存在 utility.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()

这是我的实用程序.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

导入文件时,有什么方法可以阻止文件实用程序.py 运行?

4

1 回答 1

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
于 2015-04-25T04:58:42.590 回答