2016-11-24 28 views
0
tableButon = table() 
tableParameter = table() 

entry41 = None 
entry42 = None 
entry43 = None 
entry44 = None 
entry51 = None 
entry52 = None 
entry53 = None 
entry54 = None 
entry61 = None 
entry62 = None 
entry63 = None 
entry64 = None 
entry71 = None 
entry72 = None 
entry73 = None 
entry74 = None 
entry81 = None 
entry82 = None 
entry83 = None 
entry84 = None 
entry91 = None 
entry92 = None 
entry93 = None 
entry94 = None 
entry101 = None 
entry102 = None 
entry104 = None 

entry111 = None 
entry112 = None 
entry113 = None 
entry121 = None 
entry122 = None 
entry123 = None 
entry131 = None 
entry132 = None 
entry141 = None 
entry142 = None 
entry151 = None 
entry152 = None 
entry161 = None 
entry162 = None 
entry171 = None 
entry172 = None 

def showParameters(notebook): 

    global tablaParametros 
    global entry41 
    global entry42 
    global entry43 
    global entry44 
    global entry51 
    global entry52 
    global entry53 
    global entry54 
    global entry61 
    global entry62 
    global entry63 
    global entry64 
    global entry71 
    global entry72 
    global entry73 
    global entry74 
    global entry81 
    global entry82 
    global entry83 
    global entry84 
    global entry91 
    global entry92 
    global entry93 
    global entry94 
    global entry101 
    global entry102 
    global entry103 
    global entry104 

    global entry111 
    global entry112 
    global entry113 
    global entry121 
    global entry122 
    global entry123 
    global entry131 
    global entry132 
    global entry141 
    global entry142 
    global entry151 
    global entry152 
    global entry161 
    global entry162 
    global entry171 
    global entry172 
    ........... 

    entry41 = gnc_plcEntry(plcSymbol="WL_Axial_Cons1", modulo='gnc\gnc_dilataciones.src', plcFactor=1, plcFormat=None, editable=True, sensitive=True, textColor=None, baseColor=None) 
    tablaCalculoTemperatura.attachToCell(entry41, col=2, row=2, xpadding=SeparacionH, ypadding=SeparacionV) 

    entry42 = gnc_plcEntry(plcSymbol="WL_Axial_Cons2", modulo='gnc\gnc_dilataciones.src', plcFactor=1, plcFormat=None, editable=True, sensitive=True, textColor=None, baseColor=None) 
    tablaCalculoTemperatura.attachToCell(entry42, col=3, row=2, xpadding=SeparacionH, ypadding=SeparacionV) 

....如何管理使用全局變量得到一個智能代碼

def updateParameters(notebook): 

    global tablaParameter 
    global entry41 
    global entry42 
    .... 
    value = jh.Get("\\PLC\\program\\symbol\\module\\'gnc\\gnc_dilataciones.src'\\WL_Axial_Cons1").values()[0] 
    entry41.set_text(str(value)) 
    value = jh.Get("\\PLC\\program\\symbol\\module\\'gnc\\gnc_dilataciones.src'\\WL_Axial_Cons2").values()[0] 
    entry42.set_text(str(value)) 
    ....... 

有太多的全球的人,這是一個有點乏味使用它們這種方式。我認爲這不是處理全局變量的好方法。使用所有全局列表的列表會更好嗎?或者也許創建一個班級並與自己一起使用?有任何想法嗎?

+5

...或者,根本不使用全局變量? –

+1

條目似乎是順序的,爲什麼不使用列表或元組作爲索引?或者使用一個包含變量名稱作爲關鍵字的字典。你不顯示你正在使用它們的上下文,但是通常最好避免使用全局變量 - 它破壞了封裝原則。 – cdarke

+0

1:使用列表的順序排列2:如果要通過名稱或鍵訪問它們,請使用'dict'例如:'x = {'entry1':None,' entry2':None,...}' – Torxed

回答

0

最好的解決方案是不使用這麼多不同的列表。
你還是用一個列表(按順序),或使用字典:

my_dict = {} 
my_dict['entry1'] = None 
my_dict['entry2'] = None 
... 

def my_func(): 
    global my_dict 
    print(my_dict) 

但我也建議你通過字典作爲參數,而不是試圖全球化了。

def my_func(d): 
    print(d) 
my_func(my_dict) 

你也可以只創建一個循環來創造無數的變數,如果他們都將包含None

for i in range(0,1000): 
    my_dict['entry'+str(i)] = None 
+0

謝謝我將使用您的解決方案,它看起來比我的更緊密。 – Zator