2016-11-24 8 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:それは連続した順序で 'list'を使います。2:名前やキーでアクセスして保存する場合は、' dict'を使います: 'x = {'entry1':None、 entry2 ':None、...} ' – Torxed

答えて

0

最高の解決策は、非常に多くの異なるリストを使用しないことです。
あなたは、むしろ1つのリスト(順番)を使用するか、辞書を使用する必要があります。

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

ありがとうございます私はあなたのソリューションを使用します、それは私のよりもclanerようです。 – Zator

関連する問題