簡體   English   中英

我不斷顯示錯誤“ NameError:未定義名稱'labelAns'”,

[英]I keep reveicing the error “NameError: name 'labelAns' is not defined”,

基本上,我要做的就是將labelAns上的文本更改為通過按下按鈕插入的值,但是我一直收到錯誤,而且我不知道該如何解決。

我現在要做的就是在命令上更改標簽。

class PageOne(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        label = tk.Label(self, text="Differentiation Calculator", font=LARGE_FONT)
        label.pack(pady=10,padx=10)

        button1 = tk.Button(self, text="Main Menu",
                            command=lambda: controller.show_frame(StartPage))
        button1.pack()

        button2 = tk.Button(self, text="Integration",
                            command=lambda: controller.show_frame(PageTwo))
        button2.pack()

        self.num = tk.IntVar()
        self.entry = tk.Entry(self, textvariable=self.num)
        self.button = tk.Button(self, text='Differentiate', command=self.calc)

        labelAns = tk.Label(self,text = "0", width = 15)
        labelAns.pack(side = 'right')


        self.entry.pack(side = 'left')
        self.button.pack(side = 'left')


    def calc(self):
        Jack = (self.entry.get())

        x = sp.Symbol('x')

        res = (sp.diff(Jack,x))

        global labelAns

        labelAns(text = res)


        print(res)

我認為您需要做的是在變量的初始聲明中調用labelAns global。 你應該能夠改變

labelAns = tk.Label(self,text = "0", width = 15)

進入

global labelAns = tk.Label(self,text = "0", width = 15)

然后它應該工作。 另外,您以后應該可以引用labelAns ,而無需使用global labelAns

最好這樣做,這樣您就可以輕松參考標簽:

class PageOne(tk.Frame):
    def __init__(self, parent, controller):
        ...
        self.labelAns = tk.Label(self,text = "0", width = 15)
        self.labelAns.pack(side = 'right')
        ...

    def calc(self):
        ...
        self.labelAns['text'] = res
        ...

還要注意我如何更改標簽self.labelAns的文本。 我認為您所擁有的不會起作用-這不是我以前見過的(盡管這並不意味着它不會起作用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM