如何在两个班级之间进行交流

时间:2015-02-01 18:57:40

标签: python

我对从一个类到另一个类访问方法感到困惑。我想在类B的方法内写一个关于A类的tkinter文本小部件。我该怎么做?

from abc import xyz
from Tkinter import *
class A(Frame):
    def write(self,text):
        self.display.insert(END,text+'\n')

    def __init__(self,parent):
        Frame.__init__(self,parent)
        self.parent=parent            
        self.initUI()

    def initUI(self):

        self.grid(row=0,sticky=N+E+S+W)
        self.columnconfigure(0,weight=1)
        self.rowconfigure(0,weight=1)
        self.display = Text(self)
        self.display.grid(row=0,sticky=N+E+S+W)
        self.yscroll = Scrollbar(self,command=self.display.yview)
            self.yscroll.grid(row=0,column=1,sticky=N+S)
            self.display.config(yscrollcommand=self.yscroll.set)

class B(xyz):
    def dataReceived(self):
        data = 'hello world'
        get = A()
        get.write(data + '\n')

def main():

    root = Tk()
    ex = App(root)
    root.mainloop()

这给我的错误

get = A()
exceptions.TypeError: __init__() takes exactly 2 arguments (1 given)

请建议我继承B类中A类属性的方法。感谢您花时间阅读本文。

3 个答案:

答案 0 :(得分:1)

如果您不希望传递父级,请在A级中将__init __()更改为:

def __init__(self,parent=None):

答案 1 :(得分:0)

你的问题不在于两个类之间的通信,你的问题是你忘了给A类一个参数。请注意parent参数:

def __init__(self,parent):
    Frame.__init__(self,parent)
    self.parent=parent            
    self.initUI()

答案 2 :(得分:0)

首次上课时,您必须设置单位(文本和父级)。所以它会是get = A(data + "/n", "some str" 您可以在不提供任何参数的情况下运行get.function。

此外,我不确定您是否知道但是您要为数据添加两个新行而不仅仅是一个