0
我试图从全局变量进行到Python2.7中的另一个模块的更改。 我以前在类似的情况下做过这个,但由于某种原因,它在这种情况下不起作用。 第一个文件是运行程序的文件。它会设置一个全局变量并根据所选的选项对其进行更改。我粘贴了下面的一些代码。 runnerMod:更改模块之间的Python全局变量
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命名选择的全局变量进行到这个模块。 main_mod:
from runnerMod import menuSelection
def functOne():
userInput = menuSelection().OPTIONCHOSEN()
print userInput
全局变量的选择,从0开始,但我想它的runnerMod.py模块改为1,并有这反映了main_mod.py模块中。由于我正在重写一个现有程序的接口,因此我的选项在编码方式上有点受限。任何人有任何想法吗?
你为什么要用eval修改'choice'?为什么不简单地“全局选择”,然后“选择=选择”?我问,因为'menuSelection'应该可以正常工作,所以我猜这个价值并没有真正改变。 – msvalkon
据我可以告诉它是相同的结果。我只是使用eval,因为它与程序中其他地方的代码一致。无论哪种方式,它会改变全局变量,但不会将该改变带到另一个模块 – Joe
然后我不确定哪里出了问题。我可以用你的代码修改和携带两个模块之间的变量。我的Python是2.7.3,不知道它是否重要。 – msvalkon