我需要创建一个excel文件,然后使用tkinter
文本框将其命名,换句话说,我需要将tkinter entry getvalue
存储到变量中,然后将其作为名称分配给要创建的文件。
代码:
import tkinter as tk
def show_entry_fields():
print("Nom du rapport global: %s" % (e1.get()))
master = tk.Tk()
tk.Label(master,
text="Nom du rapport global").grid(row=0)
e1 = tk.Entry(master)
e1.grid(row=0, column=1)
tk.Button(master,
text='Quit',
command=master.quit).grid(row=3,
column=1,
sticky=tk.W,
pady=4)
tk.Button(master,
text='Show', command=show_entry_fields).grid(row=3,
column=0,
sticky=tk.W,
pady=4)
import xlsxwriter
workbook = xlsxwriter.Workbook(e1.get()+'.xlsx')
worksheet = workbook.add_worksheet("Rapport global")
worksheet.set_column(1, 1, 25)
worksheet.set_column(1, 2, 25)
worksheet.write('F3', "Hello")
worksheet.write('G3', "world")
workbook.close()
tk.mainloop()
master.withdraw()
它创建了一个excel文件,但是没有名称,我不知道如何检索输入项并将其分配为文件名
我没有xlsxwriter,但我认为您是
workbook = xlsxwriter.Workbook(e1.get()+'.xlsx')
在输入框中设置值之前执行。
一种可能的解决方案是:
获取输入值并将其存储在变量中。为此,我创建了另一个按钮称为but_save。此按钮调用方法save_entry,该方法获取的值输入并存储在变量中。
运行脚本,输入所需名称,然后按保存按钮。
未以Microsoft Excel文件格式存储变量,因为我没有此模块但为简单起见,我将其存储在文本文件中。您也应该能够将其存储为xsl。
from tkinter import Tk, Label, Entry, Button
class Set_Name():
def __init__(self, master):
self.master = master
self.init_widgets()
def show_entry_fields(self):
print("Nom du rapport global: %s" % (self.e1.get()))
def init_widgets(self):
self.lab_1 = Label(self.master, text="Nom du rapport global")
self.lab_1.grid(row=0)
self.e1 = Entry(self.master)
self.e1.grid(row=0, column=1)
self.but_quit = Button(self.master, text='Quit', command=self.master.quit)
self.but_quit.grid(row=3, column=1, sticky='W', pady=4)
self.but_show = Button(self.master, text='Show', command=self.show_entry_fields)
self.but_show.grid(row=3, column=0, sticky='W', pady=4)
self.but_save = Button(self.master, text="Save", command=self.save_entry)
self.but_save.grid(row=3, column=2)
def save_entry(self):
# I don't have xlsxwriter.
file_name = self.e1.get() # get the string from Entry
with open(file_name, 'w', encoding='utf-8') as f:
f.write("Hello World!") # write whatever you want
if __name__ == "__main__":
root = Tk()
app = Set_Name(root)
root.mainloop()