簡體   English   中英

How to display a data frame read into python through Pandas in a window using Tkinter on Python 3.8?

[英]How to display a data frame read into python through Pandas in a window using Tkinter on Python 3.8?

我的問題的一些背景知識:我需要使用 Python Tkinter 制作一個 GUI。 我成功地獲得了帶有輸入字段和瀏覽器按鈕的初始頁面。 單擊瀏覽器按鈕后,文件資源管理器將打開,所選文件路徑將填充到輸入字段中。 現在,文件 select 是一個包含所需數據的.xlsx 文件。 使用輸入字段中填充的位置,我已將 .xlsx 文件作為 pandas 數據幀導入。 現在我將 .xlsx 文件作為數據框,我需要將此數據框顯示為新 window 中的表。

我目前正在使用 Python 3.8。 歡迎任何形式的建議/意見。 太感謝了:)。

我在下面的代碼中提供了有關如何執行此操作的注釋,正如注釋中提到的那樣,執行此操作的一種方法是使用 TreeView 小部件。

要演示下面的代碼,請在您的 PC 上使用以下數據創建 excel 文件 (.xlsx)

表數據

然后在 Tkinter GUI(下面提供的代碼)中。 瀏覽以獲取此文件。 然后單擊加載按鈕將此文件加載到 Treeview 小部件中。 下面的代碼片段中提供的注釋。

import tkinter as tk
from tkinter import ttk, filedialog, messagebox
import pandas as pd

# initialize the tkinter GUI
root = tk.Tk()

root.geometry("500x500")
root.pack_propagate(0)
root.resizable(0, 0)

# This is the frame for the Treeview
frame1 = tk.LabelFrame(root, text="Excel Data")
frame1.place(height=250, width=500)

# This is the frame for the Open File dialog
file_frame = tk.LabelFrame(root, text="Open File")
file_frame.place(height=100, width=400, rely=0.65, relx=0)

button1 = tk.Button(file_frame, text="Browse A File", command=lambda: File_dialog())
button1.place(rely=0.65, relx=0.50)
button2 = tk.Button(file_frame, text="Load File", command=lambda: Load_excel_data())
button2.place(rely=0.65, relx=0.30)

label_file = ttk.Label(file_frame, text="No File Selected")
label_file.place(rely=0, relx=0)

####
# THIS IS YOUR TABLE aka the TreeView widget
####
tv1 = ttk.Treeview(frame1)  # This is the Treeview Widget
column_list_account = ["Name", "Age", "Location"]  # These are our headings
tv1['columns'] = column_list_account  # We assign the column list to the widgets columns
tv1["show"] = "headings"  # this hides the default column..

for column in column_list_account:  # foreach column
    tv1.heading(column, text=column)  # let the column heading = column name
    tv1.column(column, width=50)  # set the columns size to 50px
tv1.place(relheight=1, relwidth=1)  # set the height and width of the widget to 100% of its container (frame1).
treescroll = tk.Scrollbar(frame1)  # create a scrollbar
treescroll.configure(command=tv1.yview)  # make it vertical
tv1.configure(yscrollcommand=treescroll.set)  # assign the scrollbar to the Treeview Widget
treescroll.pack(side="right", fill="y")  # make the scrollbar fill the yaxis of the Treeview widget

####


def File_dialog():
    """This function will open the file explorer"""
    filename = filedialog.askopenfilename(initialdir="/",
                                          title="Select A File",
                                          filetype=(("xlsx files", "*.xlsx"), ("all files", "*.*")))
    label_file.configure(text=filename)


def Load_excel_data():
    """ if your file is valid this will load the file into the treeview"""
    try:
        excel_filename = r"{}".format(label_file['text'])
        df = pd.read_excel(excel_filename)
    except ValueError:
        tk.messagebox.showerror("Information", "The File you have entered is invalid")
        return None

    df_rows = df.to_numpy().tolist()  # turns the dataframe into a list of lists
    for row in df_rows:
        tv1.insert("", "end", values=row)  # inserts each list into the treeview


root.mainloop()  # The mainloop for our tkinter Gui

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM