【发布时间】:2020-02-19 18:23:19
【问题描述】:
我想创建一个 pyton 脚本,它需要一个 excel 文件(由用户提供),运行一个脚本,然后保存这个 excel 文件(使用用户提供的文件名)。 我想用 Tkinter 实现一些按钮,让非程序员也能轻松使用我的算法。
我尝试创建一个“加载数据”和“显示数据”按钮(我在网上获取了一个代码),它们都可以工作。
但是我没有设法在导入的数据库上运行脚本(因为我不知道如何访问它)
我没有设法创建一个按钮,使用户能够选择他们想要保存到的文件的名称。
import tkinter as tk
from tkinter import ttk
from tkinter.filedialog import askopenfilename
from tkinter.filedialog import asksaveasfilename
from tkinter.messagebox import showerror
import pandas as pd
import csv
# --- classes ---
class MyWindow:
def __init__(self, parent):
self.parent = parent
self.filename = None
self.df = None
self.text = tk.Text(self.parent)
self.text.pack()
self.button = tk.Button(self.parent, text='LOAD DATA', command=self.load)
self.button.pack()
self.button = tk.Button(self.parent, text='DISPLAY DATA', command=self.display)
self.button.pack()
self.button = tk.Button(self.parent, text='DISPLAY DATA', command=self.display)
self.button.pack()
def load(self):
name = askopenfilename(filetypes=[('CSV', '*.csv',), ('Excel', ('*.xls', '*.xslm', '*.xlsx'))])
if name:
if name.endswith('.csv'):
self.df = pd.read_csv(name)
else:
self.df = pd.read_excel(name)
self.filename = name
display directly
self.text.insert('end', str(self.df.head()) + '\n')
def display(self):
# ask for file if not loaded yet
if self.df is None:
self.load_file()
# display if loaded
if self.df is not None:
self.text.insert('end', self.filename + '\n')
self.text.insert('end', str(self.df.head()) + '\n')
#def script_python(self):
# self.df=self.df.iloc[:, :-1]
#this is not my original script
#def file_save(self):
# savefile = asksaveasfilename(filetypes=(("Excel files", "*.xlsx"),
# ("All files", "*.*") ))
# --- main ---
if __name__ == '__main__':
root = tk.Tk()
top = MyWindow(root)
root.mainloop()
我的对excel文件进行分析的python脚本有效,所以我只是放了一个非常简单的python脚本来让你的生活更轻松。
谢谢 我是 Tkinter 的新手,不习惯上课和字典。感谢您的帮助
【问题讨论】:
-
看起来你可以简单地从
self.df访问导入的数据库 -
所以在我的函数中我应该只输入:def script_python(self.df) ?
标签: python excel class button tkinter