python提示错误“AttributeError: 'module' object has no attribute 'Tk'”是啥原因?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python提示错误“AttributeError: 'module' object has no attribute 'Tk'”是啥原因?相关的知识,希望对你有一定的参考价值。
tkinter是安装好了的,程序在Python IDLE中就可以运行,但在eclipse中总是报以上错误,是什么原因呢?
如图:
求大神解答~~
python提示错误“AttributeError: 'module' object has no attribute 'Tk'”是设置错误造成的,解决方法为:
1、打开命令行工具,进入python交互环境python。
2、导入urllib包mport urllib。
3、查看urllib包,包含的内容dir(urllib)help(urllib)从输出内容可以看出request.py是一个模块,如果是一个包的话会(package)标识出来。
4、修改第一步,代码如下:import urllib.request。
5、F5运行程序,没有报错,成功下载了文件。
参考技术A 加一句from tkinter import Tk追问还是不对。。。
追答from tkinter import Tk
top=Tk()
是 Tkinter 模块吧,GUI?
import Tkinter # 这个Tkinter.Tk()追问
Python3.3版本的改成tkinter了,用Tkinter直接就变为找不到模块了。。
追答那你看看源码怎么写的,源码的构造方法
或者
使用 dir(tkinter) 看看都有哪些
初学者 Python:AttributeError:'list' 对象没有属性
【中文标题】初学者 Python:AttributeError:\'list\' 对象没有属性【英文标题】:Beginner Python: AttributeError: 'list' object has no attribute初学者 Python:AttributeError:'list' 对象没有属性 【发布时间】:2015-06-02 19:57:45 【问题描述】:错误提示:
AttributeError: 'list' object has no attribute 'cost'
我正在尝试使用以下类处理自行车字典来进行简单的利润计算:
class Bike(object):
def __init__(self, name, weight, cost):
self.name = name
self.weight = weight
self.cost = cost
bikes =
# Bike designed for children"
"Trike": ["Trike", 20, 100],
# Bike designed for everyone"
"Kruzer": ["Kruzer", 50, 165]
当我尝试使用 for 语句计算利润时,出现属性错误。
# Markup of 20% on all sales
margin = .2
# Revenue minus cost after sale
for bike in bikes.values():
profit = bike.cost * margin
首先,我不知道为什么它指的是一个列表,而且一切似乎都被定义了,不是吗?
【问题讨论】:
您没有使用[]
语法创建Bike
对象。您正在创建列表。
【参考方案1】:
考虑:
class Bike(object):
def __init__(self, name, weight, cost):
self.name = name
self.weight = weight
self.cost = cost
bikes =
# Bike designed for children"
"Trike": Bike("Trike", 20, 100), # <--
# Bike designed for everyone"
"Kruzer": Bike("Kruzer", 50, 165), # <--
# Markup of 20% on all sales
margin = .2
# Revenue minus cost after sale
for bike in bikes.values():
profit = bike.cost * margin
print(profit)
输出:
33.0 20.0不同之处在于,在您的 bikes
字典中,您将值初始化为列表 [...]
。相反,您的代码的其余部分似乎需要 Bike
实例。所以创建Bike
实例:Bike(...)
。
至于你的错误
AttributeError: 'list' object has no attribute 'cost'
当您尝试在 list
对象上调用 .cost
时,会发生这种情况。非常简单,但我们可以通过查看您调用.cost
的位置来了解发生了什么——在这一行中:
profit = bike.cost * margin
这表示至少有一个bike
(即bikes.values()
的成员是一个列表)。如果您查看定义 bikes
的位置,您会发现这些值实际上是列表。所以这个错误是有道理的。
但是由于你的类有一个成本属性,看起来你试图使用Bike
实例作为值,所以我做了一点改变:
[...] -> Bike(...)
一切就绪。
【讨论】:
如果您解释了您的代码和 OP 之间的区别,这将是一个更好的答案。 @Kevin 在我发布后对其进行了编辑——实际上是要再次修改它以解释最初的错误。【参考方案2】:它们是列表,因为您在字典中将它们作为列表键入:
bikes =
# Bike designed for children"
"Trike": ["Trike", 20, 100],
# Bike designed for everyone"
"Kruzer": ["Kruzer", 50, 165]
您应该改用自行车类:
bikes =
# Bike designed for children"
"Trike": Bike("Trike", 20, 100),
# Bike designed for everyone"
"Kruzer": Bike("Kruzer", 50, 165)
这将允许您通过bike.cost 获得自行车的成本,就像您尝试的那样。
for bike in bikes.values():
profit = bike.cost * margin
print(bike.name + " : " + str(profit))
现在将打印:
Kruzer : 33.0
Trike : 20.0
【讨论】:
【参考方案3】:在这样使用之前,您需要将 dict 的值传递给 Bike
构造函数。或者,请参阅 namedtuple
-- 似乎更符合您的目标。
【讨论】:
以上是关于python提示错误“AttributeError: 'module' object has no attribute 'Tk'”是啥原因?的主要内容,如果未能解决你的问题,请参考以下文章
python提示AttributeError: 'NoneType' object has no attribute 'append'转发
初学者 Python:AttributeError:'list' 对象没有属性
python提示AttributeError: module 'random' has no attribute 'uniform'?
python输出有误,出现AttributeError: 'NoneType' object has no attribute 'startswith'
AttributeError: module 'requests' has no attribute 'get'的错误疑惑
python报错提示 AttributeError: ‘bytes’ object has no attribute ‘encode’、