파이썬 2.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에서의 선택이라는 이름의 전역 변수는이 모듈에 이월하고 싶다. 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
그럼 내가 틀린 것이 확실합니다. 코드를 사용하여 두 모듈 사이의 변수를 수정하고 가져올 수 있습니다. 내 파이썬 2.7.3, 중요하지 않은 경우 확실하지 않습니다. – msvalkon