Excel 스프레드시트에는 행과 열의 형태로 저장된 정보 집합이 포함되어 있습니다. Treeview 를 사용하여 Tkinter 애플리케이션에서 스프레드시트 데이터를 표시하고 사용할 수 있습니다. 위젯. Tkinter의 Treeview 위젯은 사용자가 테이블 형태로 데이터를 추가하고 조작할 수 있도록 도와줍니다. 그러나 Python은 대규모 데이터 세트를 분석하고 조작하기 위해 Pandas 데이터 분석을 수행하기 위해 많은 내장 함수 및 메서드에 대한 액세스를 제공하는 라이브러리입니다.
이 예에서는 다음 단계에 따라 Tkinter에 Excel 데이터를 표시합니다.
-
Numpy, Pandas와 같은 필수 라이브러리 가져오기 및 파일 대화 .
-
탐색기에서 파일을 열도록 사용자에게 요청하는 메뉴 모음을 추가합니다.
-
명령 추가 및 open_file() 함수 정의 .xlsx만 허용하도록 탐색기에서 파일.
-
트리뷰 만들기 위젯.
-
트리뷰 에 열 추가 열 데이터를 목록으로 변환하여 위젯.
-
주어진 데이터에서 모든 표제를 찾기 위해 열을 반복합니다.
-
주어진 데이터 프레임을 NumPy 객체로 변환하여 행을 식별할 수 있습니다. 변환한 후에는 list 메소드를 사용하여 목록으로 변환할 수 있습니다.
-
모든 행을 반복하고 트리에 순차적으로 행을 삽입합니다.
예시
# Import the required libraries from tkinter import * from tkinter import ttk, filedialog import numpy import pandas as pd # Create an instance of tkinter frame win = Tk() # Set the size of the tkinter window win.geometry("700x350") # Create an object of Style widget style = ttk.Style() style.theme_use('clam') # Create a Frame frame = Frame(win) frame.pack(pady=20) # Define a function for opening the file def open_file(): filename = filedialog.askopenfilename(title="Open a File", filetype=(("xlxs files", ".*xlsx"), ("All Files", "*."))) if filename: try: filename = r"{}".format(filename) df = pd.read_excel(filename) except ValueError: label.config(text="File could not be opened") except FileNotFoundError: label.config(text="File Not Found") # Clear all the previous data in tree clear_treeview() # Add new data in Treeview widget tree["column"] = list(df.columns) tree["show"] = "headings" # For Headings iterate over the columns for col in tree["column"]: tree.heading(col, text=col) # Put Data in Rows df_rows = df.to_numpy().tolist() for row in df_rows: tree.insert("", "end", values=row) tree.pack() # Clear the Treeview Widget def clear_treeview(): tree.delete(*tree.get_children()) # Create a Treeview widget tree = ttk.Treeview(frame) # Add a Menu m = Menu(win) win.config(menu=m) # Add Menu Dropdown file_menu = Menu(m, tearoff=False) m.add_cascade(label="Menu", menu=file_menu) file_menu.add_command(label="Open Spreadsheet", command=open_file) # Add a Label widget to display the file content label = Label(win, text='') label.pack(pady=20) win.mainloop()
출력
위의 코드를 실행하면 상단에 엑셀 파일을 열 수 있는 메뉴가 있는 창이 나타납니다.
파일을 열면 창에 스프레드시트 데이터가 표시됩니다.