使用条目输入作为文件名Python tkinter

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

我需要创建一个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文件,但是没有名称,我不知道如何检索输入项并将其分配为文件名

python-3.x tkinter input filenames
1个回答
0
投票

我没有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()
© www.soinside.com 2019 - 2024. All rights reserved.