PYTHON:\uu init_uu方法不创建属性?

2024-09-30 20:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Tkinter,并试图为属于Main1类的main对象创建一个名为wordlist的属性。在

这是主要课程:

class Main1(Instructions):
    def __init__(self, master, wordlist):
        super(Main1,self).__init__(master)
        self.wordlist = self.readwords()
        self.textbox.insert(0.0,self.wordlist)
    def create_wdgts(self):

        mainlbl = Label(self,text="Tänk på ett ord!")
        mainlbl.grid(row=0,column=2)

        self.textbox = Text(self, width = 50, height = 5, wrap = WORD)
        self.textbox.grid(column=2,row=1)

        self.backbttn = Button(self,text="Tillbaka")
        self.backbttn["command"] = self.back
        self.backbttn.grid(column=5,row=0)

        self.pointentry = Entry(self)
        self.pointentry.grid(column=2, row=2)
        self.pointlbl = Label(self,text = "Poäng:")
        self.pointlbl.grid(column = 1, row= 2)
        self.pointbttn = Button(self, text="skicka poäng")
        self.pointbttn.grid(row= 2, column = 3)
        self.pointbttn["command"]= self.pointhndlr()

        self.crrctlbl = Label(self, text = "Rätt ord:")
        self.crrctlbl.grid(column = 1, row = 3)
        self.crrctentry = Entry(self)
        self.crrctentry.grid(column = 2, row= 3)
        self.crrctbttn = Button(self, text="skicka rätt ord")
        self.crrctbttn.grid(row= 3, column = 3)

        self.yesbttn = Button(self, text="Ja")
        self.yesbttn.grid(row = 4, column=4)

        self.nobttn = Button(self, text = "Nej")
        self.nobttn.grid(row=4, column=5)

    def readwords(self):
        """Returns list with all words in words.txt"""
        file = codecs.open("words.txt","r","utf8")
        wordlist = []
        for word in file:
            wordlist.append(word.strip())
        return wordlist

    def guess(self):
        self.guesstemp = random.choice(wordlist)
        self.textbox.insert(0.0,"Ange poäng för ordet '"+guesstemp+"': ")

    def pointhndlr(self):
        pointtemp = self.pointentry.get()
        self.pointentry.delete(0)
        self.wordlist = remvwords(self.wordlist,self.guesstemp,self.pointtemp,self.guesslist,self.pointlist)

我希望我不需要张贴更多的程序,因为这已经是很多代码。总之,我收到一条错误消息,说Main1对象没有wordlist属性。为什么?我是在init方法中创建的!在

感谢所有的帮助。在

萨罕

编辑:错误被追溯到最后一行,我试图在其中更改self.单词表. 错误消息是:

^{pr2}$

Tags: textselfinitdefcolumnbuttonlabelgrid
2条回答

原因是:

super(Main1,self).__init__(master)

又称之为:

^{pr2}$

这反过来又会:

self.pointbttn["command"]= self.pointhndlr()

这并不是将函数赋值给self.pointbttn["command"],而是调用self.pointhndlr,并将结果赋给self.pointbttn["command"]。在

解决方案:删除括号:

self.pointbttn["command"]= self.pointhndlr

你打电话的方式超级初始化是错误的。在

你用过:

super(Main1,self).__init__(master)

您应该使用:

^{pr2}$

以您调用它的方式,您正在创建的对象并没有初始化为Instructions实例。相反,master对象被重新初始化或重新转换为Instructions实例。在

相关问题 更多 >