我试图将全局变量更改为Python2.7中的另一个模块。 我之前在类似的情况下已经完成了这项工作,但出于某种原因,它在这种情况下无法工作。 第一个文件是运行程序的文件。它设置一个全局变量并根据所选的选项进行更改。我已经粘贴了下面的一些代码。 runnerMod:
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
我希望来自runnerMod.py的名为choice的全局变量继承到此模块。 main_mod:
from runnerMod import menuSelection
def functOne():
userInput = menuSelection().OPTIONCHOSEN()
print userInput
全局变量选择从0开始,但我想在runnerMod.py模块中将其更改为1,并将其反映在main_mod.py模块中。由于我正在重写现有程序的接口,因此我的选项在编码方式上有点受限。任何人有任何想法吗?
答案 0 :(得分:1)
事实证明,我无法将更改传递给来自runnerMod.py的全局变量,因为它是启动程序的模块。我必须做的是使用runnerMod.py启动程序,然后在main_mod.py中调用一个函数。这个函数调用BACK到runnerMod.py中的一个类并加载了GUI。只有通过回调,然后修改全局变量,我才能通过更改。