2017-12-08 13 views
0

式でラベルを作成するにはどうすればいいですか?エントリの値を変更すると、ラベルの値が自動的に変更されますか?まるでそれがフォーミュラで細胞を凌駕するかのように。また、エントリが空の場合は、コンテンツが表示されないようにする必要があります。Pythonのtkinterラベルの式

import tkinter as tk 

root = tk.Tk() 
ent1 = tk.Entry(root) 
lab1 = tk.Label(root,text='Price') 
ent2 = tk.Entry(root) 
lab2 = tk.Label(root,text='Quantity') 
lab3 = tk.Label(root,text='') #lab3 formula = float(ent1.get()) * int(ent2.get()) 

lab1.pack() 
ent1.pack() 
lab2.pack() 
ent2.pack() 
lab3.pack() 
+0

既に試したことがありますか、オンラインで見ましたか? – SneakyTurtle

+0

もちろん、私は尋ねる時間を無駄にしません。問題は、名前の検索方法がわからないことです。それに近い機能のボタンを使用した例とボタンなしでやりたいことがあります。 –

答えて

1

変数が変更されたときに関数を実行するには、traceメソッドを使用します。

import tkinter as tk 

def update(*args): 
    try: 
     output_var.set(price_var.get() * quantity_var.get()) 
    except (ValueError, tk.TclError): 
     output_var.set('invalid input') 

root = tk.Tk() 

lab1 = tk.Label(root,text='Price') 
price_var = tk.DoubleVar() 
price_var.trace('w', update) # call the update() function when the value changes 
ent1 = tk.Entry(root, textvariable=price_var) 

lab2 = tk.Label(root,text='Quantity') 
quantity_var = tk.DoubleVar() 
quantity_var.trace('w', update) 
ent2 = tk.Entry(root, textvariable=quantity_var) 

output_var = tk.StringVar() 
lab3 = tk.Label(root, textvariable=output_var) #lab3 formula = float(ent1.get()) * int(ent2.get()) 

lab1.pack() 
ent1.pack() 
lab2.pack() 
ent2.pack() 
lab3.pack() 

root.mainloop() 
+0

それは私が望んでいたように働いていましたが、数値を入力していくつかのエラーを表示すると、それは正常ですか? –

+0

@ThomasCaioいいえ、そうしてはいけません。どのようなエラーが表示されますか? – Novel

+0

他の値を入れるためにエントリの0.0と0を削除すると、//// Tkinterコールバックで例外が発生する トレースバック(最新の呼び出し最後): ファイル "C:\ Python36-32 \ lib \ tkinter \ __ init__。 py "、line 505、get return self._tk.getint(value) _tkinter.TclError:期待される整数ですが、" "あります。 –

関連する問題