python - 如何使用用户条目更改文件名?

标签 python tkinter xlsxwriter os.path

我刚开始学习 python,所以我需要这方面的帮助,因为我不认识可以帮助我的人。我正在尝试制作一个程序,在该程序中,用户可以根据他们在来自 tkinter 的 Fname = Entry() 上编写的内容从 excel 更改文件名。

我尝试通过使用 a = Fname.get()os.rename(Test .xlsx, a + ".xlsx") 获取存储的数据。但我总是得到一个错误:

    a = Fname.get()
AttributeError: 'NoneType' object has no attribute 'get'

我尝试的另一件事是使用“Fname”代替“a”,但我收到此错误:

    os.rename("Test.xlsx", Fname + " .xlsx")
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

我也试过直接改'workbook = xlsxwriter.Workbook(Fnam + ".xlsx")',还是报错

PD:我在创建“.xlsx”文件时没有遇到任何问题

我使用的代码是下一个:

     import xlsxwriter
     import os.path
     from tkinter import *

     def run():
         a = Fname.get()
         os.rename("Test.xlsx", Fname + " .xlsx")

     screen = Tk()

     B1 = Button(text = "Name", command = run).grid(row = 2, column = 2)

     Fname = Entry().grid(row = 1, column = 1)

     BE = Button(text = "Exit").grid(row = 3, column = 3)

     workbook = xlsxwriter.Workbook("Test.xlsx")
     worksheet = workbook.add_worksheet()
     worksheet.write("A1", "Question")
     worksheet.write("B1", "Answer")
     workbook.close()

     screen.mainloop()

最佳答案

这是因为您将 Fname 分配给网格化后的值,即 None 您需要拆分行

Fname = Entry().grid(row = 1, column = 1)

进入

Fname = Entry()
Fname.grid(row = 1, column = 1)

如果您以后出于同样的原因尝试引用 B1BE,您将遇到类似的问题。

您还需要使用 StringVar() 才能调用 .get()

你的代码应该看起来像我想象的那样

import xlsxwriter
import os.path
from tkinter import *

def run():
    a = user_input.get()
    os.rename("Test.xlsx", a + ".xlsx")

screen = Tk()

B1 = Button(text="Name", command=run)
B1.grid(row=2, column=2)

user_input = StringVar()
Fname = Entry(textvariable=user_input)
Fname.grid(row=1, column=1)

BE = Button(text="Exit")
BE.grid(row=3, column=3)

workbook = xlsxwriter.Workbook("Test.xlsx")
worksheet = workbook.add_worksheet()
worksheet.write("A1", "Question")
worksheet.write("B1", "Answer")
workbook.close()

screen.mainloop()

关于python - 如何使用用户条目更改文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622501/

相关文章:

python - 绘制矩形 tkinter 不起作用

python - 如果我使用 grid(),为什么当我调整窗口大小时小部件不缩放?

python - 使用 XlsxWriter 对行进行分组

python - 如何在不复制 Pandas 数据框中的其他列值的情况下分解列值?

python - Pandas 系列位到十进制整数

python - wxPython Phoenix 源构建在 build_py 步骤上失败

python - 如何完全删除 tkinter 中标签的垂直填充?

python - 如何获取变量的类型

python - 如何在 xlsxwriter 中使用条件格式()的行列表示法

excel - Pandas:迭代 DataFrame 列表并将每个数据框导出到 Excel 工作表