python - 不知道是什么导致了这个错误“AttributeError:'_io.TextIOWrapper'对象没有属性'tk'”
问题描述
代码一直在抛出AttributeError: '_io.TextIOWrapper' object has no attribute 'tk'
,我不知道是什么原因造成的,我查看了其他帖子,但没有什么能帮助我了解发生了什么。
下面是导致它的代码。
def showhwk(lesson, popup):
lesson = lesson.replace("/","")
popup.withdraw()
show = Tk()
show.title("Homework marks for "+lesson)
show.geometry("+{}+{}".format(positionRight, positionDown))
try:
with open(lesson+".csv", "r") as show:
csvlist = list(csv.reader(show))
for label in range (len(csvlist)):
Label(show, text = "hello").grid(row = label)
except FileNotFoundError:
show.title("Error!")
error = Label(show, text = "Homework file was not found")
error.grid(row = 0)
def goback3(show):
popup.deiconify()
show.withdraw()
returnbut = Button(show, text = "Return", bg = "#79838e", command = lambda: goback3(show)).grid(row = 40, sticky = W+E)
这是完整的错误:
Traceback (most recent call last):
File "C:\Users\Olek\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "D:\Desktop\Folders\Python\Coursework\coursework code main.py", line 242, in <lambda>
show = Button(popup, text = "Show homework marks", bg = "green", command = lambda: showhwk(lesson, popup))
File "D:\Desktop\Folders\Python\Coursework\coursework code main.py", line 278, in showhwk
Label(show, text = "hello").grid(row = label)
File "C:\Users\Olek\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 3143, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "C:\Users\Olek\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 2561, in __init__
BaseWidget._setup(self, master, cnf)
File "C:\Users\Olek\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 2530, in _setup
self.tk = master.tk
AttributeError: '_io.TextIOWrapper' object has no attribute 'tk'
解决方案
你首先show
这样定义:
show = Tk()
稍后,您show
使用以下语句重新定义为打开文件句柄:
with open(lesson+".csv", "r") as show:
然后,您尝试在show
此处用作小部件的主人:
Label(show, text = "hello").grid(row = label)
因为show
不再是一个widget,所以它不能作为另一个widget的master。这就是您收到 tkinter 错误的原因。
推荐阅读
- python - Python/Pandas - 当只有一个值要计算时,有没有办法让 mean() 返回 NaN?
- ios - 在 iOS 上创建自定义共享方法的最佳方法是什么?
- java - 如何处理从 spring-boot 到 mysql 数据库的连接池错误?
- jquery - 文件上传“错误空文件上传结果”
- node.js - 如何跟踪错误“getaddrinfo ENOTFOUND localhost 3306”
- angular - 具有延迟加载的角路由器链接
- r - R:通过应用不同的公式计算数据集的新变量
- c++ - 如何使用 C++ 中的迭代器编写一个循环,将 unordered_set 的每个元素与所有其他元素进行比较?
- java - 将 Jar 文件转换为 Eclipse 项目
- rust - 在 Rust 的 SDL2 窗口中操作原始像素的最有效方法是什么?