标签:os-path xlsxwriter tkinter python
我是学习Python的新手,所以我需要帮助,因为我不认识可以帮助我的人.我正在尝试制作一个程序,其中用户可以根据自己在tkinter的Fname = Entry()上编写的内容来从excel更改文件名.
我试图通过使用= Fname.get()然后使用os.rename(Test.xlsx,“ .xlsx”)保存名为Fname的条目中的数据来获取存储的数据.但是我总是得到一个错误:
a = Fname.get()
AttributeError: 'NoneType' object has no attribute 'get'
我尝试的另一件事是使用仅由“ a”表示的“ Fname”,但出现此错误:
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()
标签:os-path,xlsxwriter,tkinter,python 来源: https://codeday.me/bug/20191210/2105178.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。