变量函数通过类功能框架给出。当试图在add_function中使用它时,我得到了这个错误。
AttributeError:class FunctionFrame没有属性' function'
class FunctionFrame(Frame):
"""a simple application to allow a user ti enter an
expressio
n and evaluate it
"""
def __init__(self, master):
"""
a a=simple expression evaluator
"""
Frame.__init__(self, master, relief=SUNKEN, bg='#A5A5A5', pady=3)
Label(self, text='Function in x: ', bg='#A5A5A5').pack(side=LEFT)
function = Entry(self, width=35).pack(side=LEFT, padx=2)
Button(self, text='Select', command=self.select).pack(side=RIGHT, padx=4)
colour = Entry(self, width=15).pack(side=RIGHT)
Label(self, text='Function Colour: ', bg='#A5A5A5').pack(side=RIGHT, padx=2)
def select(self):
(rgb, hx)= askcolor()
class ButtonFrame(Frame):
"""a simple application to allow a user ti enter an
expression and evaluate it
"""
def __init__(self, master):
"""
a a=simple expression evaluator
"""
Frame.__init__(self, master, bg='#CECEF6')
Button(self, text='Add Function', command=self.add_function).pack(side=LEFT)
Button(self, text='Redraw All', command=self.redraw_all).pack(side=LEFT)
Button(self, text='Remove Last Function', command=self.remove_last).pack(side=LEFT)
Button(self, text='Remove All Functions', command=self.remove_all).pack(side=LEFT)
Button(self, text='Exit', command=self.exit_app).pack(side=LEFT)
def add_function(self):
make_function(FunctionFrame.function)
答案 0 :(得分:3)
function
被定义为__init__
中的局部变量:
def __init__(self, master):
function = Entry(self, width=35).pack(side=LEFT, padx=2)
要在function
之外使用__init__
,您需要将其设为实例属性:
def __init__(self, master):
self.function = Entry(self, width=35).pack(side=LEFT, padx=2)
然后,在ButtonFrame
中,您需要制作FunctionFrame
的实例:
def add_function(self):
make_function(FunctionFrame(self).function)
答案 1 :(得分:1)
您需要在实例上设置 function
:
self.function = Entry(self, width=35).pack(side=LEFT, padx=2)
如果没有self.
,function
只是__init__
方法中的本地名称,并在该方法完成时被丢弃。
你可能想对colour
做同样的事情。
答案 2 :(得分:1)
您的代码中未定义FunctionFrame.function。
快速修复:
class FunctionFrame(Frame):
def __init__(self, master):
...
self.function = Entry(self, width=35).pack(side=LEFT, padx=2)
...
class ButtonFrame(Frame):
...
def add_function(self):
make_function(FunctionFrame(self.master).function)
不确定如何访问Frame
的主属性