2017-05-24 37 views
-4

使用ArcGIS Python Addin我需要在類之間更新一個名爲phase的全局變量。這裏我想要做的是更新phase變量,方法是更改​​ComboBoxClass1並單擊ButtonClass3訪問它。更新Python中類之間的全局變量問題

正如你可以看到我試圖通過global phase = selection

def onSelChange(self, selection): 
     global phase = selection 

不過貌似這是不工作!

import arcpy 
import pythonaddins 
import os 

phase = "" 

class ButtonClass3(object): 
    """Implementation for Trace_addin.button (Button)""" 
    def __init__(self): 
     self.enabled = True 
     self.checked = False 
    def onClick(self): 
     print global phase 

class ComboBoxClass1(object): 
    """Implementation for Trace_addin.combobox (ComboBox)""" 
    def __init__(self): 
     self.items = ["Phase A", "Phase B", "Phase C"] 
     self.editable = True 
     self.enabled = True 
     self.dropdownWidth = 'WWWWWWWWWWWWWWWWW' 
     self.width = 'WWWWWWWWWWWWWWWWW' 
    def onSelChange(self, selection): 
     global phase = selection 
    def onEditChange(self, text): 
     pass 
    def onFocus(self, focused): 
     pass 
    def onEnter(self): 
     pass 
    def refresh(self): 
     pass 
+0

我能問你爲什麼反對投票這個問題? ! – Suffii

+1

'全球階段'是一個完整的陳述。您無法將此與讀取或寫入變量的值結合使用。 – jasonharper

+0

你的_exact和specific_問題是什麼? – csmckelvey

回答

2

正如@jasonharper說global phase是對自己的聲明。
如果您要訪問phase你不必使用global例如:

print phase 

如果要修改phase使用:

global phase 
phase = selection 
+0

感謝t.m.adam,我仍然不明白爲什麼有些人投下的問題,而不是暗示像你做的一樣! – Suffii

+0

我不知道,這是一個寫得很好的問題,也許他們認爲這太容易了。不介意downvoters .. –

+0

@Suffii人們往往downvote問題,表明你不知道的語言的基本語法。 SO不應該是一個輔導服務。 – Barmar