Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用用户条目更改文件名';?_Python_Tkinter_Xlsxwriter_Os.path - Fatal编程技术网

Python 如何使用用户条目更改文件名';?

Python 如何使用用户条目更改文件名';?,python,tkinter,xlsxwriter,os.path,Python,Tkinter,Xlsxwriter,Os.path,我是python新手,所以我需要这方面的帮助,因为我不认识可以帮助我的人。我正在尝试制作一个程序,在该程序中,用户可以根据他们在tkinter的Fname=Entry()上所写的内容,从excel更改文件名 我尝试使用a=Fname.get()保存名为Fname的条目中的数据,然后使用os.rename(Test.xlsx,a+“.xlsx”)获取存储的数据。但我总是会出错: a = Fname.get() AttributeError: 'NoneType' object has no

我是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)
进入

如果以后出于同样的原因尝试参考
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()

谢谢你的回答,但是错误信息还是出现了。@PedroElizaldeAcevedo我想这是一个不同的错误,但是你还需要将
os.rename(“Test.xlsx”,Fname+“.xlsx”)
更改为
os.rename(“Test.xlsx”,a+“.xlsx”)
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()