textbox pythonの出力値に関数を追加する

2020-07-01 python pandas dataframe tkinter

これが私のプログラムの出力結果です。偶然にも、出力値を別の関数にリンクして、別のテキストボックスに別の出力を表示することは可能です。

-例としてLBの使用

  1. 下線付きの値をクリックします ここに画像の説明を入力してください

  2. 特定のグループの詳細を別のテキストボックスに表示する

ここに画像の説明を入力してください

これが、LB / SKT / CHG KIT grpの出力を取得するための私のコードです。

#LB Grp
    a = 0
    column = df2.columns
    lb_df = pd.DataFrame(df2, columns = ['HARDWAREGROUP'])
    lb_df.columns = ['LB Group']
    df111 = pd.DataFrame(columns=['LB Group'])
    #lb_df.drop_duplicates(subset="LB Group", inplace=True)
    while(a < rows):   
        s = x.loc[a]['LOADBOARDGRPNAME']
        y = lb_df[df2['HARDWAREGROUP'].str.contains(s)]
        df111 = df111.append(y)
        df111.reset_index(drop=True, inplace=True)
        a += 1
    df112 = df111.loc[:]["LB Group"]
    if df112.empty:
        print("No results found for Loadboard Group.")
    load_box.delete("1.0", "end")
    load_box.insert(tk.END, df112.to_string(index=False))

   
#SKT group
    
    b = 0
    skt_df = pd.DataFrame(df2, columns = ['HARDWAREGROUP'])
    skt_df.columns = ['Socket Group']
    df222 = pd.DataFrame(columns=['Socket Group'])
    #skt_df.drop_duplicates(subset="Socket Group", inplace=True)
    while(b < rows):
        k = x.loc[b]['SOCKETGRPNAME']
        z = skt_df[df2['HARDWAREGROUP'].str.contains(k)]
        df222 = df222.append(z)
        df222.reset_index(drop=True, inplace=True)
        b += 1
    df223 = df222.loc[:]["Socket Group"]
    if df223.empty:
        print("No results found for Socket Group.")
    skt_box.delete("1.0", "end")
    skt_box.insert(tk.END, df223.to_string(index=False))
   
# changekit group
    c = 0
    chg_df = pd.DataFrame(df2, columns = ['HARDWAREGROUP'])
    chg_df.columns = ['CK Group']
    df333 = pd.DataFrame(columns=['CK Group'])
    #chg_df.drop_duplicates(subset="CK Group", inplace=True)
    while(c < rows):
        j = x.loc[c]['PRIHANDLERFULLKIT']
        v = chg_df[df2['HARDWAREGROUP'].str.contains(j)]
        df333 = df333.append(v)
        df333.reset_index(drop=True, inplace=True)
        c += 1
    df334 = df333.loc[:]["CK Group"]
    if df334.empty:
        print("No results found for Changekit Group.")
    chg_box.delete("1.0", "end")
    chg_box.insert(tk.END, df334.to_string(index=False))

Answers

イベント<<ListboxSelect>>バインドし、dictを使用してそれらのID(キーとして)、説明(値として)を保存して効率を上げることができます。

import tkinter as tk

def change_the_val(event):
    description_box.delete("1.0",tk.END)
    description_box.insert("1.0", d.get(listbox.get(tk.ANCHOR))) # get the active selection in the listbox and get the description in the dict.


d = { # save ID,and Description.
    "Apple": "I am Apple!",
    "Banana": "I am Banana!",
    "???": "I am ???"
}

r = tk.Tk()

listbox = tk.Listbox(r)
listbox.pack()

listbox.bind("<<ListboxSelect>>", change_the_val)

description_box = tk.Text(r)
description_box.pack()
for key in d:
    listbox.insert(tk.END, key)

r.mainloop()

Related