如何在同一个类中使用另一个函数的变量?

时间:2015-01-31 08:18:43

标签: tkinter python-3.3

在我的程序中有一个按钮,当我按下它时会得到rara条目。 但它不起作用。有没有人知道可能是什么问题?

from tkinter import *
import random
import tkinter.messagebox

class Application(Frame):
    """ GUI aplication hoger of lager"""
    def __init__(self,master):
        """Instaleerd het Frame"""
        super(Application, self).__init__(master)
        self.grid()
        Application.rarara=0;Application.aantal=0;Application.max_pogingen=10;Application.ikdenkaan=random.randrange(1,100)
        self.main()
        master.after(1,self.welkom)

    def welkom(self):
        """Create Widgets voor het spelletje hoger of lager"""
        #Verwelkomingslebels en instructielabels
        msgb=tkinter.messagebox.showinfo("uitleg",
                                         "Welkom bij het spelletje'hoger of lager'.\nIk heb zojuist aan een getal tussen 1 en 100 gedacht.\nJij mag dat getal raden en je hebt 10 pogingen."
                                         )
    def labels(self):
        #ik denk aan label
        Label(self,
              text="Ik denk aan:"
              ).grid(row=0,column=0,sticky=W)


    def invoer(self):
        rara=Entry(self)
        rara.config(width=5)
        rara.grid(row=0, column=1,sticky=W)
        rara.configure(state="normal")

    def naknopindruk(self):
        ikdenkaan=Application.ikdenkaan
        max_pogingen=Application.max_pogingen
        aantal=Application.aantal
        rara=Application.invoer.rara
        rarara=rara.get()
        Application.aantal+=1
        if rarara==ikdenkaan and max_pogingen !=aantal:
            msgb2=tkinter.messagebox.showinfo("winaar","je hebt het juiste getal geraden.\nJe hebt het in "+aantal+" gedaan")

    def knop(self):
        Button(self,text="raad",command=self.naknopindruk).grid(row=1,column=0,sticky=[W,E])

    def main(self):
        self.labels()
        self.invoer()
        self.knop()

root=Tk()
root.title("Hoger of lager")
root.geometry("+533+244")
app=Application(root)
root.mainloop()

2 个答案:

答案 0 :(得分:1)

您需要保存对rara的引用。例如:

self.rara = Entry(...)
...
rarara = self.rara.get()

答案 1 :(得分:0)

为了访问' rara'再次,您需要保存对它的引用。在函数结束时,只需添加以下代码:     self.rara = rara

当您需要再次访问它时,您可以使用self.rara获取该属性 在您尝试访问它之前,请注意您已初始化它,因为您可能会收到错误。