tkinter 中的顺序按钮和操作

问题描述 投票:0回答:1

我正在编写一个小 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

但是,运行我的代码,两个按钮同时出现,并且预览显示在第二个按钮下。它应该显示在第一个下方。谢谢您的帮助。

dataframe user-interface tkinter button touch-event
1个回答
0
投票

这是因为您在

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
© www.soinside.com 2019 - 2024. All rights reserved.