我正在编写一个小 GUI,用户可以通过按“浏览文件目录”按钮上传 Excel 文件。之后,程序应显示前 5 行作为数据预览。在该预览之后并且仅在该预览之后,我希望显示“获取统计信息”按钮。而通过点击“获取统计数据”,用户可以看到一些基本的数据统计数据。 这是我的代码:
import os
from tkinter import *
from tkinter.ttk import *
from tkinter.filedialog import askopenfile
import pandas as pd
clear = lambda: os.system('cls') # On Windows System
clear()
data = pd.DataFrame()
def open_file():
global data
global root
file = askopenfile(mode ='r', filetypes =[('Excel Files', '*.xlsx')])
if file is not None:
label1 = Label(root, text=file.name)
label1.pack()
#if label1 is True:
data = pd.read_excel(file.name)
label2 = Label(root, text='Preview', font=('Helvetica', 12))
label2.pack()
label3 = Label(root, text=data.head())
label3.pack()
return data
def click_btn1():
btn1 = Button(root, text ='Browse File Directory', command =lambda:open_file())
btn1.pack(side = TOP, pady = 10)
def statistics():
data.describe()
def click_btn2():
btn2 = Button(root, text = 'Get statistics', command=lambda:statistics())
btn2.pack(pady = 100)
root = Tk()
root.geometry('700x600')
click_btn1()
click_btn2()
mainloop()
以下是 excrel 文件中数据的内容示例:
日期 | 降雨 |
---|---|
12/10 | 15 |
13/10 | 10 |
但是,运行我的代码,两个按钮同时出现,并且预览显示在第二个按钮下。它应该显示在第一个下方。谢谢您的帮助。
这是因为您在
click_btn2
(创建第一个按钮)之后立即调用 click_btn1
(创建第二个按钮)。
您需要将第二个按钮的创建移至打开
excel
文件的函数中:
def open_file():
global data
global root
file = askopenfile(mode ='r', filetypes =[('Excel Files', '*.xlsx')])
if file is not None:
label1 = Label(root, text=file.name)
label1.pack()
#if label1 is True:
data = pd.read_excel(file.name)
label2 = Label(root, text='Preview', font=('Helvetica', 12))
label2.pack()
label3 = Label(root, text=data.head())
label3.pack()
click_btn2()
return data