微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 TK 中的多个列表框与 Pandas Dataframe 绑定

如何解决将 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 举报,一经查实,本站将立刻删除。