Python 属性错误:'';对象没有属性'';

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

我有一个问题,我在用Python3编写代码。代码是关于把一个网站的新闻放到我的画布上。然而,我不断得到这样一个错误,它说:

AttributeError:“NewsFeed”对象没有属性“canvas”

这是我的代码:

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)