我正在尝试将全局变量的更改转移到 Python2.7 中的另一个模块。我以前在类似情况下这样做过,但由于某种原因,它在这种情况下不起作用。第一个文件是运行程序的文件。它设置一个全局变量并根据所选选项对其进行更改。我已经粘贴了一些下面的代码。跑步者模组:
import Tkinter
from main_mod import*
choice = "0"
def main():
main_mod=functOne()
class GUI(Tkinter.Tk):
def __init__(self, parent):
Tkinter.Tk.__init__(self, parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
self.update()
btnOption1 = Tkinter.Button(self, text=u"Option 1", command=self.onButtonClick)
btnOption1.grid(column=0, row=1)
def onButtonClick(self):
selection = "1"
self.destroy()
exec 'choice=%s' %selection in globals()
main()
class menuSelection:
def OPTIONCHOSEN(self):
return choice
if __name == "__main__":
app = GUI(None)
app.mainloop
我希望名为 choice from runnerMod.py 的全局变量延续到此模块。main_mod:
from runnerMod import menuSelection
def functOne():
userInput = menuSelection().OPTIONCHOSEN()
print userInput
全局变量选择从 0 开始,但我想在 runnerMod.py 模块中将其更改为 1,并将其反映在main_mod.py模块中。由于我正在重写现有程序的接口,因此我的选项在其编码方式上受到一些限制。有人在这里有什么想法吗?
事实证明,我无法将更改从 runnerMod.py 传递到全局变量,因为它是启动程序的模块。我所要做的就是使用 runnerMod.py 启动程序,然后在 main_mod.py 中调用一个函数。此函数在 runnerMod.py 中调用 BACK 并加载 GUI。只有通过回调然后修改全局变量,我才能传递更改。