如何使用用户条目更改文件名?
How can I use an user Entry to change a filename'?
我刚开始学习 python,所以我需要这方面的帮助,因为我不认识可以帮助我的人。我正在尝试制作一个程序,用户可以在其中根据他们在 tkinter 的 Fname = Entry()
上写的内容从 excel 更改文件名。
我尝试使用 a = Fname.get()
保存名为 Fname
的条目中的数据,然后使用 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)
如果您以后出于同样的原因尝试参考 B1
或 BE
,您将 运行 遇到类似的问题。
您还需要使用 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,所以我需要这方面的帮助,因为我不认识可以帮助我的人。我正在尝试制作一个程序,用户可以在其中根据他们在 tkinter 的 Fname = Entry()
上写的内容从 excel 更改文件名。
我尝试使用 a = Fname.get()
保存名为 Fname
的条目中的数据,然后使用 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)
如果您以后出于同样的原因尝试参考 B1
或 BE
,您将 运行 遇到类似的问题。
您还需要使用 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()