私は、次のように 'for'ループを使って4列のテキストウィジェットを作成しました。 tkinterのTextウィジェットで値を消去したときにリストから値を削除するには?
私の目標は、だから私はに価値を付加しているタブのキーと機能を結合し、lambda
を使用してlist1 =[]
、list2=[]
、list3=[]
とlist4=[]
のように異なるリスト内の各およびすべてのテキストウィジェットの列の値を追加することですその特定のリスト。これまでのところうまく動作します。
私は(例えば、第二列2列目の値 - 764)を誤って間違った値を入力した場合今の問題は、「タブ」がバインドされているので、それはまた、リストに追加されます。
私はいくつかの計算目的のためにこれらのリストを作成しているので、間違いなく計算が損なわれます。ユーザーは間違いなく入力することができません。
私はテキストをクリアし、以前に格納されていたリストの値を変更する方法が必要です。テキストウィジェットで変更されると、リスト内で変更する必要があります。
MY CODE:
from tkinter import *
list1 = []
list2 = []
list3 = []
list4 = []
def testfunction(var):
print(var)
list1.append(var)
def testfunction2(var):
print(var)
list2.append(var)
def testfunction3(var):
print(var)
list3.append(var)
def testfunction4(var):
print(var)
list4.append(var)
root = Tk()
for _ in range(3):
t = StringVar()
t1 = IntVar()
t2 = IntVar()
t3 = IntVar()
ent = Entry(root, textvariable=t)
ent.bind("<Tab>",(lambda event, ent=ent:testfunction(ent.get())))
ent.grid(row=_, column=0)
ent2 = Entry(root, textvariable=t1)
ent2.bind("<Tab>",(lambda event, ent2=ent2:testfunction2(ent2.get())))
ent2.grid(row=_, column=1)
Rat = Entry(root, textvariable=t2)
Rat.bind("<Tab>",(lambda event, Rat=Rat:testfunction3(Rat.get())))
Rat.grid(row=_, column=2)
amt = Entry(root, textvariable=t3)
amt.bind("<Tab>",(lambda event, amt=amt:testfunction4(amt.get())))
amt.grid(row=_, column=3)
root.mainloop()
たぶんEntry'はそれに必要な動作を与えるために、 'サブクラス? –
これは根本的に壊れているユーザーインターフェイスです。ユーザーが特定の順序でフィールドに入力する必要があります。これは、誰かがGUIを動作させる方法ではありません。それらの 'textvariable'をリストにすべて保存する必要があります。これにより、値が入力された順序とはまったく無関係に、計算を実行するときにそれらをすべて取得することができます。 – jasonharper
@jasonharper私はあなたのことを理解しています。この場合、私に例を教えてください。どのように私はそれをユーザーフレンドリーにすることができますか? – Sundararajan