2011-12-30 9 views
0

私はいくつかのエントリを表示するコードを持っていますが、エントリの数は前のエントリに依存しています。
これは私のコードです(これは問題の一部です)。このコードでは、選択された量のエントリが表示されますが、入力するとすべてのエントリが編集されます。Python Tkinter - いくつかのエントリをforに入れます

#The variable amCon is acquired previously 
for r in range(amCon): 
    cant_entry = ttk.Entry(mainframe, textvariable=names) 
    cant_entry.grid(column=0, row=r+1, sticky='WE') 

各エントリをリストの一部にして、別々に使用できるようにしたいと考えています。

答えて

0

すべてのエントリウィジェットに同じ変数を割り当てています。それぞれに個別の変数を作成するか、textvariable1オプションを使用しないでください。このオプションは不要です。ウィジェット自体のメソッドを使用してウィジェットの内容を取得したり設定したりすることはできます。 textvariableは、主に便宜上のものです(また、変数にトレースを入れて、いつ変化があるかを知ることができます)。

import tkinter as tk 
import ttk 

class App(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.size=5 
     self.vars = {} 
     for i in range(self.size): 
      self.vars[i] = tk.StringVar() 
      entry = ttk.Entry(self, textvariable=self.vars[i]) 
      entry.pack(side="top", fill="x") 
      self.vars[i].trace("w", self.callback) 

     # this entry will show the other values as a list 
     self.e0Var = tk.StringVar() 
     self.e0 = ttk.Entry(self, textvariable=self.e0Var) 
     self.e0.pack(side="top", fill="x", pady=(4,0)) 

     # call the callback once to establish the initial value 
     self.callback() 

    def callback(self, *args): 
     values = [] 
     for i in range(self.size): 
      values.append(self.vars[i].get()) 
     # make a comma separated list and store in e0Var 
     self.e0Var.set(str(values)) 

app = App() 
app.mainloop() 
1

私はあなたがcant_entry以外の変数を持っていると思っています。リストをお試しください!あなたが見

entries = [] 
entries.append(ttk.Entry(mainframe, textvariable=names)) 
entries[0] 

同じ名前(cant_entry)の下に別のものを置いているとき、それらはすべて表示されますが、それらはすべてcant_entryにリンクされています。 cant_entryを編集すると、他のすべてのcant_entryも編集されます。リストははるかに動的で、append関数を使用して要素をリストに配置することができます。次に、エントリ[エントリ数]を使用して、入力した内容を取得します。

+0

あなたは間違っていると言う何**彼らはすべてではありません。ここで

は5つのエントリ、リストとして他の5つの値を示して6番目のエントリを持って不自然な例です。 'cant_entry'にリンクされていれば、最後のものだけです。このリンクは、すべてのエントリが 'textvariable'オプションに同じ変数を使用しているためです。 –

+0

Mm。私は本当にTkinterの巨大な専門家ではなく、すべて同じ変数に割り当てられていることに気づきました。 – user1122107

関連する問題