2013-05-06 3 views
0

Я пишу GUI Tkinter для назначения и возникли проблемы с доступом к методам класса. Первый бит кода, который я вставил здесь, - это класс интерфейса верхнего уровня. Основная функция кода создает экземпляр этого класса, где «master» есть и экземпляр Tk().Доступ к методам класса из другого класса в Python 2.7

class PlotApp(object): 
    """ 
    Top level interface. Contains canvas and other widgets. 
    """ 

    def __init__(self, master): 

     # Initialise variables, world screen class and window features 
     master.wm_minsize(740, 480) 
     master.configure(bg = "gray80") 
     self.isFunctionDrawn = False   

     # Create objects 
     self.pointf = PointFrame(master) 
     self.canvas = Canvas(master, bg = "white", bd = 2, relief = SUNKEN, 
          highlightbackground = "gray80") 
     self.canvas.pack(expand = True, fill = BOTH, padx = 10, side = TOP) 
     self.functionf = FunctionFrame(master) 
     self.plotf = PlotFrame(master) 
     self.buttonf = ButtonFrame(master, self.canvas) 

self.functionf является экземпляром моей FunctionFrame класса, который содержит метод, называемый getFunction(). Я хочу кнопку в экземпляре класса ButtonFrame для доступа к этому методу, но я не знаю, как это сделать. Я пробовал:

def testFunction(self): 
    self.parent.functionf.getFunction() 

(где parent является master аргумент в первый бит кода), но это, кажется, называть functionf как объект Tk(), который, очевидно, не будет работать. Есть ли способ обойти это?

ответ

0

мастер - ваш экземпляр Tk(). просто потому, что вы вызвали переменную parent в вашем классе ButtonFrame, это не значит, что это объект, создавший экземпляр.

Вам нужно либо пройти в self от PlotApp в качестве родителя (если вам нужен master объекта в вашем ButtonFrame, сохранить мастер в чем-то вроде self.master в PlotApp), или вам необходимо также передать в self переменного вашего PlotApp экземпляра к ваш ButtonFrame.

+0

Спасибо, что кучи Underrun, вот и все. – Drizzlydayz

Смежные вопросы