python - wxPython : How to refresh and draw on wx. 来自不相关类的框架

标签 python

我的应用程序中有两个类,第一个是 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/

相关文章:

python - 使用下拉菜单创建虚线图

python - 如何迭代 xml 文件,检查 lxml 属性是否存在并将其及其值连接到另一个变量?

python - 通过邮箱查询端点用户

python - 如果任务失败,如何调用 "task"?

python - Flask sqlalchemy 更新错误 - update() 缺少 1 个必需的位置参数 : 'self'

python - 如何在 XGBoost 库的 plot_tree 函数中包含特征名称?

python - 输出过程——将数据保存到文件中

Python 字符串格式 - 限制字符串长度,但修剪字符串开头

python - 解码字符串算法实现以获取建议

python - 如何在 pandas 或 GeoPandas 中过滤具有无效几何图形的 WKT 字符串