Python 属性错误:'';对象没有属性'';
我有一个问题,我在用Python3编写代码。代码是关于把一个网站的新闻放到我的画布上。然而,我不断得到这样一个错误,它说: AttributeError:“NewsFeed”对象没有属性“canvas” 这是我的代码:Python 属性错误:'';对象没有属性'';,python,class,object,tkinter,attributes,Python,Class,Object,Tkinter,Attributes,我有一个问题,我在用Python3编写代码。代码是关于把一个网站的新闻放到我的画布上。然而,我不断得到这样一个错误,它说: AttributeError:“NewsFeed”对象没有属性“canvas” 这是我的代码: from tkinter import * import feedparser root=Tk() class Achtergrond() : m_Width = 0 m_Height = 0 m_BgColor = 0 def Crea
from tkinter import *
import feedparser
root=Tk()
class Achtergrond() :
m_Width = 0
m_Height = 0
m_BgColor = 0
def CreateCanvas(self, master, width, height) :
m_Width = width
m_Height = height
m_BgColor='#14B4E1'
self.canvas = Canvas(master, width=m_Width, height=m_Height)
self.canvas.configure(bg=m_BgColor)
self.canvas.pack()
return(self.canvas)
def create_rectangle(x0, y0 ,x1,y1, color) :
self.canvas.create_rectangle(x0, y0, x1, y1, fill=color)
return
def create_title (self, x, y, title, opmaak):
self.canvas.create_text(x,y,text=title, font= opmaak)
return
def create_newsbox(master,x0,y0,x1,y1,color):
canvas.create_rectangle(x0,y0,x1,y1, fill=color)
return
def SetBackgroundColor(self, kleurcode) :
m_BgColor = kleurcode
self.canvas.configure(bg=m_BgCode)
self.canvas.pack()
return
class NewsFeed ():
Hitem = 0
Nitem = 0
feed = 0
th = 0
rssURL = ""
def UpdateNews(self,path):
self.rssURL = path
self.feed = feedparser.parse(self.rssURL)
self.Nitem = len(self.feed["items"])
return
def ToonEerste(self):
str=""
self.Hitem = 0
for i in range(self.Hitem,self.Hitem+2,1):
if i < self.Nitem:
entry = self.feed["entries"][i]
str += entry.title + "\n\n" + entry.summary + "\n__________________________________________________\n\n"
self.canvas.delete(th)
th = self.canvas.create_text(200,300, width=300, text = str)
return
def ToonVolgende(self):
str=""
self.Hitem += 3
if self.Hitem >= self.Nitem:
Hitem = 0
for i in range(self.Hitem,self.Hitem+2,1):
if i < self.Nitem:
entry = feed["entries"][i]
str += entry.title + "\n\n" + entry.summary + "\n__________________________________________________\n\n"
self.canvas.delete(th)
th = self.canvas.create_text(200,300, width=300, text = str)
return
hoofdscherm = Achtergrond()
a = hoofdscherm.CreateCanvas(root, 1024,600)
b = hoofdscherm.canvas.create_rectangle(30, 120, 360, 500, fill= '#ffffff')
a.create_rectangle(10,10, 1014,80, fill='#ffffff')
a.create_rectangle(30, 120, 360, 500, fill= '#ffffff')
a.create_text(250, 50, text="Harens Lyceum" , font=('Calibri' , 40))
a.configure(bg='#14B4E1')
a.pack()
n = NewsFeed()
n.UpdateNews('http://www.nu.nl/rss/Algemeen')
n.ToonEerste(root)
n.ToonVolgende(root)
root.mainloop()
从tkinter导入*
导入feedparser
root=Tk()
类Achtergrond():
m_宽度=0
m_高度=0
m_BgColor=0
def CreateCanvas(自身、主控、宽度、高度):
m_宽度=宽度
m_高度=高度
m#BgColor='#14B4E1'
self.canvas=canvas(主控,宽度=m_宽度,高度=m_高度)
self.canvas.configure(bg=m_BgColor)
self.canvas.pack()
返回(self.canvas)
def创建_矩形(x0、y0、x1、y1,颜色):
self.canvas.create_矩形(x0,y0,x1,y1,fill=color)
返回
def创建_标题(self、x、y、title、opmaak):
self.canvas.create_text(x,y,text=title,font=opmaak)
返回
def创建_新闻框(主、x0、y0、x1、y1、颜色):
画布。创建矩形(x0,y0,x1,y1,填充=颜色)
返回
def SetBackgroundColor(自身,kleurcode):
m_BgColor=kleurcode
self.canvas.configure(bg=m_BgCode)
self.canvas.pack()
返回
类NewsFeed():
Hitem=0
Nitem=0
feed=0
th=0
rssURL=“”
def UpdateNews(自身,路径):
self.rssURL=路径
self.feed=feedparser.parse(self.rssURL)
self.Nitem=len(self.feed[“items”])
返回
def ToonEerste(自身):
str=“”
self.Hitem=0
对于范围内的i(self.Hitem,self.Hitem+2,1):
如果我=self.Nitem:
Hitem=0
对于范围内的i(self.Hitem,self.Hitem+2,1):
如果我
我们想在我们的问题上得到一些帮助,我们没有太多的经验。我们需要用覆盆子做一个屏幕,为学校显示新闻等。如果您知道如何修复代码,我们将非常感谢您的帮助。您的
NewsFeed
类实例n
没有Canvas
属性。如果要将在Achtergrond
类实例hoofdscherm
中定义的Canvas
传递到n
,则可以使用\u init\u()
在新闻提要的类定义下定义它:
然后,当您将NewsFeed
对象初始化为n
时,您可以从Achtergrond
类实例hoofdscherm
传递Canvas
实例:
n = NewsFeed(hoofdscherm.canvas)
这是您当前问题的解决方案,但您的代码中还有其他错误,您可以在修改后看到这些错误。请包含完整的错误回溯。我的意思是,您提供的错误会告诉您出了什么问题。您不能在类NewsFeed
中使用self.canvas…
,因为您没有在该类中定义它。如何在“NewsFeed”类中定义画布,而不创建新画布。将现有画布作为参数传递给NewsFeed
中的函数?不要使用+
组合字符串。使用format()
方法组合字符串和变量数据。谢谢!这起作用了,你在其他问题上是对的
n = NewsFeed(hoofdscherm.canvas)