我的应用程序中有两个类,第一个是 wx 类,实例化如下:
if __name__ == '__main__':
app = wx.App()
ExampleFrame(None, 'Does Nothing')
NewX = X(sys.argv)
app.MainLoop()
类本身如下所示:
class ExampleFrame(wx.Frame):
def __init__(self, parent, title):
super(ExampleFrame, self).__init__(parent, title=ttl, size=(600, 600))
self.Centre()
self.Show()
def DrawLine(self, x1, y1, x2, y2):
dc = wx.ClientDC(self)
dc.DrawLine(x1, y1, x2, y2)
def Clear():
self.Hide
self.Show
# NOW DRAW SOME LINES....
另一个 Class 实例是 Class X,我尝试在其中调用 ExampleFrame.Clear(),但失败了。
我的问题是,如何从 X 类调用 ExampleFrame 中的 Clear() 方法?我错过了什么?
编辑:当 python 脚本失败时,它确实会抛出某种错误,但窗口关闭得太快而无法看到它的状态。
最佳答案
您可以将 wx 对象的引用分配给变量,然后您可以像任何其他对象一样访问它们的函数:
ef = ExampleFrame(None, 'Something')
NewX = X(sys.argv, ef)
现在,在 X 中,您需要存储此引用,以便其他方法可以访问它:
def __init__(self, argv, ef):
# Some other stuff
self.__ef = ef
X 的方法现在可以访问您的框架:
# X method
def clearFrameFromX(self):
self.__ef.Clear()
关于python - wxPython : How to refresh and draw on wx. 来自不相关类的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7119755/