如何解决将 TK 中的多个列表框与 Pandas Dataframe 绑定
我是 Tkinter GUI 的新手,正在尝试实现以下目标
我有数据框 df
AccountName Group1 Group2 Group3
Cost Global Global Global
Cost Global Global Global
Cost Global Global Global
Cost Region Total Asia Asia
Cost Region Asia Singapore
Cost Region Asia Indonesia
我在 TK 框架中有三个具有唯一值的列表框,每个列表框中都有一个附加的文本项“全选”
Group1 Group2 Group3
Global Global Global
Region Total Asia Asia
Select All Asia Singapore
Select All Indonesia
Select All
我想以一种方式将这些列表框绑定在一起,如果我在 Group1 中选择一个值,那么只有相关的值应该出现在 Group2 和 Group3 中。同样,如果我在 Group2 中选择一个值,那么只有相关的值应该出现在 Group3 中。 此外,如果我选择“全选”,则其他列表框应显示所有值。
预期产出
示例 1:如果 Group1 选择的是 Region
Group1 Group2 Group3
Region Total Asia Asia
Asia Singapore
Select ALL Indonesia
Select ALL
示例 2:如果 Group1 选择是全选
Group1 Group2 Group3
Select ALL Global Global
Total Asia Asia
Asia Singapore
Select ALL Indonesia
Select ALL
示例 3:如果 Group1 选择为 Region,Group2 选择为 Asia
Group1 Group2 Group3
Region Asia Singapore
Indonesia
Select ALL
编码 我已经完成编码以通过数据框为列表框分配值,但不确定如何进一步
import tkinter as tk
import pandas as pd
import Dataimport as dI
df = dI.import_Data()
def listing(data):
a = []
for i in data:
if i not in a:
a.append(i)
return a
G1 = listing(df["Groupby_L1"].tolist())
G1.append(" Select ALL")
G2 = listing(df["Groupby_L2"].tolist())
G2.append("Select ALL")
G3 = listing(df["Groupby_L3"].tolist())
G3.append("Select ALL")
def listBoxs(listBox,data):
i = 0
for widget in data:
listBox.insert(i,widget)
i = i + 1
#in tk frame I am using follwing code
Group1 = Label(frame1)
Group1.config(text='Groupby_L1')
Group1.grid(column='1',ipadx='10',padx='5',pady='30',row='1')
Group1_Data = ListBox(frame1,selectmode=MULTIPLE)
Group1_Data.config(height=3,width=20)
listBoxs(Group1_Data,G1)
Group1_Data.grid(column='2',row='1')
Group2 = Label(frame1)
Group2.config(text='Groupby_L2')
Group2.grid(column='15',padx='60',row='0')
Group2_Data = ListBox(frame1,selectmode=MULTIPLE)
Group2_Data.config(height=3,width=20)
listBoxs(Group2_Data,G2)
Group2_Data.grid(column='20',row='0')
Group3 = Label(frame1)
Group3.config(text='Groupby_L3')
Group3.grid(column='15',row='1')
Group3_Data = ListBox(frame1,selectmode=MULTIPLE)
Group3_Data.config(height=3,width=20)
listBoxs(Group3_Data,G3)
Group3_Data.grid(column='20',row='1')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。