变量功能通过类功能框给出。当尝试在add_function中使用它时,出现此错误。
AttributeError:类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)
最佳答案
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)
关于python - 在另一个类函数中使用一个类的条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16562108/