2016-06-30 17 views
1

私はTkinterで簡単なGUIを作っています(コードは下にあります) "Fetch"ボットンを押すと、コマンドラインのGUIからテキストが得られます。Tkinter変数

この例では、「ユーザー」は「Service Points Won」フィールドに0.5を、「Return Points Won」フィールドに0.7を入力しているとします。 私が達成したいことは、コマンドで表示された結果の隣にはマッチ「ラベル」を促していることである

0.5 
0.7 

私は次のような結果がコマンドプロンプトに表示されます「取得」ボタンを押すとも表示されます。

したがって、入力として0.5と0.7を使用して私の例に戻ることができます。私はコマンドプロンプトで結果を得たいと思います。

"Service Points Won" 0.5 
"Return Points Won" 0.7 

GUIスクリプト

from Tkinter import * 

fields = 'Service Points Won', 'Return Points Won' 

def fetch(variables): 
    for variable in variables: 
     print "%s" % variable.get()  

def makeform(root, fields): 
    lab1= Label(text="Stats", font="Verdana 10 bold") 
    form = Frame(root)        
    left = Frame(form) 
    rite = Frame(form) 
    lab1.pack(side=TOP) 
    form.pack(fill=X) 
    left.pack(side=LEFT) 
    rite.pack(side=RIGHT) 

    variables = [] 
    for field in fields: 
     lab1= Label() 
     lab = Label(left, text=field) 
     ent = Entry(rite) 
     lab.pack(anchor='w') 
     ent.pack(fill=X) 
     var = StringVar() 
     ent.config(textvariable=var) 
     var.set('0.5') 
     variables.append(var) 
    return variables 

if __name__ == '__main__': 
    root = Tk() 
    vars = makeform(root, fields) 
    Button(root, text='Fetch', 
       command=(lambda v=vars: fetch(v))).pack() 
    root.bind('<Return>', (lambda event, v=vars: fetch(v))) 
    root.mainloop() 

任意の提案ですか?

+1

'variable'にはおそらく' .get() 'よりも多くのメソッドと属性があります。他のメソッドや属性の1つが、おそらくフィールドの名前を与えるでしょうか?あるいは、おそらく 'str(変数)'でもこのトリックがありますか? – Evert

+0

@Evert、str(変数)はトリックを行いません。どのような方法や属性を使用できますか? – Wouter

+1

'print(dir(variable))'はおそらく多くのオプションを明らかにします。あなたは最も論理的なものを試すことから始めることができます。ドキュメントも役に立ちます。 – Evert

答えて

1

一部のフィールドを他のフィールドにマップする必要があるため、辞書を使用する方がリストを使用するよりも良い選択肢です。あなたはfetch機能に望むように、あなたの印刷をフォーマットすることができ

Service Points Won 0.5 
Return Points Won 0.7 

注意を出力します

def fetch(variables): 
    for key, val in variables.items(): 
     print key, val.get() 

def makeform(root, fields): 
    ... 
    variables = {} 
    for field in fields: 
     ... 
     variables[field] = var #associate a field with its variable 
    return variables 

関連する問題