我对从一个类到另一个类访问方法感到困惑。我想在类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类属性的方法。感谢您花时间阅读本文。
答案 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。
此外,我不确定您是否知道但是您要为数据添加两个新行而不仅仅是一个