Python 显示数据帧Tkinter子集的下拉选项

Python 显示数据帧Tkinter子集的下拉选项,python,pandas,tkinter,dropdown,Python,Pandas,Tkinter,Dropdown,我有一个数据框,我想让GUI显示数据,我有date_time一列,每一小时显示一次数据,我想做一个下拉选项假设用户选择1小时,则只显示1小时所有列和行,如果用户选择2小时,则显示第二个所有列和行。请任何人帮助我如何显示数据gving下拉选项。 我会非常感激的。提前谢谢 SAMPLE DATA: Name: Longitude(degree) Latitude(degree) DATE_TIME Mean Sea Value (m) DRY or WET SD 87

我有一个数据框,我想让GUI显示数据,我有date_time一列,每一小时显示一次数据,我想做一个下拉选项假设用户选择1小时,则只显示1小时所有列和行,如果用户选择2小时,则显示第二个所有列和行。请任何人帮助我如何显示数据gving下拉选项。 我会非常感激的。提前谢谢

SAMPLE DATA:

Name:   Longitude(degree)   Latitude(degree)    DATE_TIME   Mean Sea Value (m)  DRY or WET
SD      87.0308            21.4441    00:00 IST 05-08-2019    -0.0467     DRY
Sea1    87.0544            21.4152    00:00 IST 05-08-2019    -1.0653     DRY
4K      86.9927            21.4197    00:00 IST 05-08-2019    -0.1331     DRY
4KP1    86.9960            21.4166    00:00 IST 05-08-2019    -0.0863     DRY
Name:   Longitude(degree)   Latitude(degree)    DATE_TIME   Mean Sea Value (m)  DRY or WET
SD      87.0308          21.4441      01:00 IST 05-08-2019    -0.0329     DRY
Sea1    87.0544          21.4152      01:00 IST 05-08-2019    -0.4067     DRY
4K      86.9927          21.4197      01:00 IST 05-08-2019    -0.0897     DRY
4KP1    86.9960           21.4166     01:00 IST 05-08-2019    -0.0676     DRY

如何使用OptionMenu在
DataFrame

我不会尝试在tkinter中显示它,因为它是不同的问题


我用值创建列表,这些值将显示在
选项菜单中

values = ['all'] + list(df['TIME'].unique())
和变量,按下按钮后我将使用该变量进行选择

selected = tk.StringVar()
当我得到选择,然后我可以使用

df2 = df[ filter ]
仅选择某些行


若你们需要一些不同的东西,那个么你们必须更好地描述这个问题,并展示一些可以用来测试和修改的代码



编辑:版本,数据显示在
GUI
中-不理想,但它显示所有或过滤的数据

import tkinter as tk
import pandas as pd

# --- functions ---

def showdata():
    global table

    # destroy old frame with table
    if table:
        table.destroy()

    # create new frame with table         
    table = tk.Frame(frame_data)
    table.grid(row=0, column=0)

    # fill frame with table
    row, column = df2.shape
    for r in range(row):
        for c in range(column):
            e1 = tk.Entry(table)
            e1.insert(1, df2.iloc[r, c])
            e1.grid(row=r, column=c, padx=2, pady=2)
            e1.config(state='disabled')

def on_click():
    global df2

    val = selected.get()

    if val == 'all':
        df2 = df
        #next_button.grid_forget()
    else:
        df2 = df[ df['TIME'] == val ]
        #next_button.grid(row=1, column=0)

    print(df2)
    showdata()
    next_button.grid(row=1, column=0)

# --- main ---

frame_data = None

df = pd.DataFrame({
    'TIME': ['00:00','00:00','01:00','01:00','02:00','02:00'],
    'A': ['a','b','c','d','e','f'],
    'B': ['x','x','y','y','z','z'],
})

root = tk.Tk()

values = ['all'] + list(df['TIME'].unique())
selected = tk.StringVar()

options = tk.OptionMenu(root, selected, *values)
options.pack()

button = tk.Button(root, text='OK', command=on_click)
button.pack()

# frame for table and button "Next Data"
frame_data = tk.Frame(root)
frame_data.pack()

exit_button = tk.Button(root, text="EXIT", command=root.destroy)
exit_button.pack() 

# table with data - inside "frame_data" - without showing it
table = tk.Frame(frame_data)
#table.grid(row=0, column=0)

# buttom "Next Data" - inside "frame_data" - without showing it
next_button = tk.Button(frame_data, text="Next Data", command=showdata)
#next_button.grid(row=1, column=0)

root.mainloop()

使用选项创建下拉列表,从下拉列表中获取值,并在熊猫中使用它来选择要显示的行,然后显示它们。见:有类似的例子吗?如何在下拉列表中将行和列作为变量传递,我有400多行6列。在链接中,您有如何使用OptionMenu的示例。只需从OptionMenu中获取值并与pandas一起使用-
df2=df1[filter]
,然后显示
df2
。坦白地说,我不明白你想选什么。如果您想要更好的示例,请首先创建我们可以运行和修改的最小工作代码。非常感谢,我非常感谢您的帮助,但我希望在下拉列表中选择时间00时显示所有行和列数据,然后显示时间00的所有行和列数据,请让我知道如何继续,00时间的行和列可以在entry中,也可以标记为any。谢谢,但我的例子就是这样。当您选择时间
01:00
时,它会显示(
print()
)所有有时间
01:00
的行和列,实际上我希望在GUI上看到数据,而不是在终端上,因为我的try在下面,它在条目_tkinter.TclError:bad option“-row”中给出错误:必须是-after,-anchor,-before,-expand,-fill,-in,-ipadx,-ipady、-padx、-pady或-side使用Entryelse:df2=df[df['TIME']==val]print(df2)行,列=df.shape用于范围内的r(row):用于范围内的c(column):e1=tk.Entry(root)e1.insert(1,df.iloc[r,c])e1.pack(row=r,column=c)e1.config(state='disabled')正如我在回答中所写的:在GUI中显示是不同的大问题。
import tkinter as tk
import pandas as pd

# --- functions ---

def showdata():
    global table

    # destroy old frame with table
    if table:
        table.destroy()

    # create new frame with table         
    table = tk.Frame(frame_data)
    table.grid(row=0, column=0)

    # fill frame with table
    row, column = df2.shape
    for r in range(row):
        for c in range(column):
            e1 = tk.Entry(table)
            e1.insert(1, df2.iloc[r, c])
            e1.grid(row=r, column=c, padx=2, pady=2)
            e1.config(state='disabled')

def on_click():
    global df2

    val = selected.get()

    if val == 'all':
        df2 = df
        #next_button.grid_forget()
    else:
        df2 = df[ df['TIME'] == val ]
        #next_button.grid(row=1, column=0)

    print(df2)
    showdata()
    next_button.grid(row=1, column=0)

# --- main ---

frame_data = None

df = pd.DataFrame({
    'TIME': ['00:00','00:00','01:00','01:00','02:00','02:00'],
    'A': ['a','b','c','d','e','f'],
    'B': ['x','x','y','y','z','z'],
})

root = tk.Tk()

values = ['all'] + list(df['TIME'].unique())
selected = tk.StringVar()

options = tk.OptionMenu(root, selected, *values)
options.pack()

button = tk.Button(root, text='OK', command=on_click)
button.pack()

# frame for table and button "Next Data"
frame_data = tk.Frame(root)
frame_data.pack()

exit_button = tk.Button(root, text="EXIT", command=root.destroy)
exit_button.pack() 

# table with data - inside "frame_data" - without showing it
table = tk.Frame(frame_data)
#table.grid(row=0, column=0)

# buttom "Next Data" - inside "frame_data" - without showing it
next_button = tk.Button(frame_data, text="Next Data", command=showdata)
#next_button.grid(row=1, column=0)

root.mainloop()