2017-01-11 7 views
-2

python 2.7では、与えられた人の人の入力に応じて、場所の価格を印刷したいと思います。価格は、ユーザーが異なる人数を入力するたびに変わる必要があります。Tkinterのユーザー入力に応じて値を印刷する方法は?

from Tkinter import * 

top = Tk() 
top.geometry("500x500") 
a = Label(text="Adult:") 
a.place(x=50,y=100) 
adult_input = Entry(top) 
adult_input.place(x=100,y=100) 
adult_num = Label (text="x RM 5.00 per pax :") 
adult_num.place(x=250,y=100) 
top.mainloop() 

ユーザーの入力に応じて価格を印刷するにはどうすればよいですか?

+0

あなたが必要なものを行います関数を実行、または 'Entry'(すなわち、'バインド(」、FUNCTION_NAME) ')に機能してイベントをバインドするために使用' Button'ので、それは毎回あなたが実行されます新しいcharを入力します。 – furas

答えて

0

ここでは、状況に応じて最も簡単な方法を示します。ただtop.mainloop()前に次の行を追加します。

b = Button(top, 
      text="Confirm", 
      command=lambda: adult_num.config(text=adult_input.get())) 

b.place('''anywhere''') 

ボタンをクリックしたときにこれがあなたのadult_numラベルを更新します。

これで十分ではなく、表示する前に値を計算する必要がある場合は、関数が必要です。

あなたがf機能を持っていると仮定します。そして、あなたはボタンのcommandでそれを呼び出す必要があります

def f(adults_number): 
    adults_number = int(adults_number) 
    return '''the result of some formula''' 

b = Button(top, 
      text="Confirm", 
      command=lambda: adult_num.config(text=str(f(adult_input.get())))) 

また、あなたのadult_numラベルはそう、topに添付する必要があります宣言は次のようにする必要があります。

adult_num = Label(top, text="...") 
+0

しかし、私は3つの異なる機能の総計を合計したいが、同時に各価格の個々の値を残したい場合はどうすればよいですか?例えば、 。 デフadultfunc(adult_number): adult_number = INT(adult_number) リターン(adult_number * 5.00) デフchildfunc(CHILD_NUMBER): \t CHILD_NUMBER = INT(child_num) \tリターン(CHILD_NUMBER * 2.00) デフseniorfunc(\t senior_number = int(senior_num) \t返信(senior_number * 2.00) 3つの個別価格と合計3つの価格の合計で構成される総計を計算するように、どのようにボタンを移動する必要がありますか? @Right leg – Lek

+0

@Lekあなたのコードの大きな問題は、機能のない1つのブロックだということです。このため、より複雑な行動を加えることは首に痛みを与えます。あなたが「私はこれをやりたがっている」と思うときはいつでも、関数を書く。私はあなたに一般的な考えを与えましたが、残りはあなた次第です;) –

0

あなたは値

import Tkinter as tk 

# --- functions --- 

def recalc(): 
    value = e.get() 
    if value != '': 
     l['text'] = float(value) * 5.00 

# --- main --- 

root = tk.Tk() 

e = tk.Entry(root) 
e.pack() 
e.bind('<KeyRelease>', recalc) 

l = tk.Label(root) 
l.pack() 

b = tk.Button(root, text="Recalc", command=recalc) 
b.pack() 

root.mainloop() 

か、Entryにイベントをバインドすることができ、それはすべてのキーの後に計算されますを計算する関数を実行するためにButtonを使用することができます。

import Tkinter as tk 

# --- functions --- 

def recalc(event): # bind executes function with argument `event` 
    #value = e.get() 
    value = event.widget.get() 
    if value != '': 
     l['text'] = float(value) * 5.00 

# --- main --- 

root = tk.Tk() 

e = tk.Entry(root) 
e.pack() 
e.bind('<KeyRelease>', recalc) 

l = tk.Label(root) 
l.pack() 

root.mainloop() 
関連する問題