0

我正在尝试将更改从全局变量转移到 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

我希望 runnerMod.py 中名为 selection 的全局变量能够延续到这个模块。主模块:

from runnerMod import menuSelection

def functOne():
    userInput = menuSelection().OPTIONCHOSEN()
    print userInput

全局变量选择从 0 开始,但我想在 runnerMod.py 模块中将其更改为 1,并将其反映在 main_mod.py 模块中。由于我正在重写现有程序的接口,因此我的选择在其编码方式上有点受限。有人在这里有什么想法吗?

4

1 回答 1

1

事实证明,我无法从 runnerMod.py 传递对全局变量的更改,因为它是启动程序的模块。我要做的是使用 runnerMod.py 启动程序,然后调用 main_mod.py 中的函数。这个函数调用了 runnerMod.py 中的一个类并加载了 GUI。只有通过回调然后修改全局变量,我才能传递更改。

于 2012-05-30T11:55:46.570 回答