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