所以我的代码从根本上区分了我插入并在“ s_label”上输出的函数。这一直有效,直到我尝试为我的程序制作多个页面。现在发生的所有事情是我收到“未定义s_label”的错误,并且没有其他任何反应。我知道问题出在我如何放置代码,但我不知道如何解决它。
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="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
#This positions the label for f(x)
Label(self, text='Enter f(x)').pack(side='left')
#This inputs the Function f(x), f(x) = (f_entry)
f_entry = Entry(self, width=12)
f_entry.pack(side='left')
s_label = Label(self, width=20)
#This is the command that excecutes when we press the button ((Differentiate) f = )
def calc(event=None):
f_txt = f_entry.get()
x = sp.Symbol('x')
res = (sp.diff(f_txt,x))
print(res)
global s_label
s_label.configure(text=res) # display f(x) value
Button(self, text=' (Differentiate) f = ', relief='flat',command=calc).pack(side='left')
s_label.pack(side='left')
答案 0 :(得分:0)
当然不行了
更简单的示例(无效):
class A:
def __init__(self):
x=20
def func():
global x
print(x)
func()
if __name__ == '__main__':
a = A()
尽管这样做:
x = 20
class A:
def __init__(self):
def func():
global x
print(x)
func()
if __name__ == '__main__':
a = A()
因此,您由此知道,使用global
可以使用所有嵌套函数
另一个工作,例如
x = 20
def A():
x = 30
def B():
global x
print(x)
B()
if __name__ == '__main__':
A()
>> 20
这会给您同样的错误:
def A():
x = 30
def B():
global x # You don't even require this statement over here
print(x)
B()
if __name__ == '__main__':
A()
对于您的特定情况,您可以使用self
变量,该变量会将您的任何变量绑定到该类的实例,您可以使用该变量,并修改self.variable_name
引用该变量的任何位置,该变量将进行编辑/显示整个类实例的值。