0

グローバル変数から 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モジュールに反映させたいです。私は既存のプログラムへのインターフェースを書き直しているので、私のオプションはコード化された方法で少し制限されています。ここで何かアイデアはありますか?

4

1 に答える 1

1

結局のところ、プログラムを起動したモジュールであるため、runnerMod.pyからグローバル変数への変更を渡すことができませんでした。私がしなければならなかったのは、runnerMod.pyを使用してプログラムを起動し、main_mod.pyの関数を呼び出すことでした。この関数は、runnerMod.pyのクラスにBACKを呼び出し、GUIをロードしました。コールバックしてグローバル変数を変更することによってのみ、変更を渡すことができます。

于 2012-05-30T11:55:46.570 に答える