我有一个带有QMainWindow的PyQt4应用程序。在该程序中,我启动另一个QMainWindow,用于绘制matplotlib图。我的方法基于将matplotlib与PyQt集成的Eli Benderskysway。你知道吗
class QtMatplotlibWindow(QtGui.QMainWindow):
"""Plot window to display data, is created by main application"""
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
如果我用parent=None
实例化QtMatplotlibWindow
,结果窗口将完全“独立”,这意味着它在任务栏中有自己的图标,并且与主应用程序完全“分离”。因此,例如,我可以将另一个应用程序(比如Internet Explorer)放到前面,然后只将Matplotlib窗口放到前面,实际的应用程序留在后台。但是,使用parent=None
会导致matplotlib窗口从堆栈中抛出并在某个看似随机的时间点关闭,而我却不愿意这样做。你知道吗
另一方面,如果我将主应用程序的实例作为父应用程序传递,那么这两个窗口将“绑定在一起”,这意味着我无法独立地查看它们。你知道吗
我怎样才能做到“两全其美”?我想将主应用程序的实例作为父应用程序传递,这样生成的绘图只有在关闭主应用程序时才会关闭,但我也希望绘图窗口在显示和移动时完全独立。我希望QMainWindow的某些属性允许我这样做。我希望我能把我的问题说清楚,我觉得我缺少合适的术语。你知道吗
您的第二个窗口随机消失的事实表明它已被垃圾收集。必须保留对所有窗口的python引用。例如,将新创建的窗口附加到应用程序中的某个列表:
windowlist.append(QtMatplotlibWindow())
相关问题 更多 >
编程相关推荐