0
我在我的python gui应用程序中打开新窗口时出现问题。我有3个班级(首次登录显示,并且打开2个窗口)。这工作得很好:从python gui打开新窗口
class LoginDialog(QtGui.QDialog):
def __init__(self, parent = None):
super(LoginDialog, self).__init__(parent)
.....
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
.....
class ImageViewerMainWindow(QtGui.QMainWindow):
def __init__(self, path, parent = None):
super(ImageViewerMainWindow, self).__init__(parent)
.....
if __name__ == "__main__":
qtApp = QtGui.QApplication(sys.argv)
loginDlg = LoginDialog()
if not loginDlg.exec_():
sys.exit(-1)
MyMainWindow = MainWindow()
MyMainWindow.show()
viewer = ImageViewerMainWindow("C:\image.jpg")
viewer.show()
sys.exit(qtApp.exec_())
我需要从主窗口执行浏览器,但是当我把它这样,它只是闪烁并消失:
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
.....
def DoOpenImageViewer(self):
viewer = ImageViewerMainWindow("C:\image.jpg")
viewer.show()
就是这样,谢谢:) – Aleksandar
我已经使用了一个列表来存储引用,如你所建议的,我还有一个问题:当MainWindow关闭时如何关闭所有打开的窗口?我已经在MainWindow类中像这样退出函数: 'def DoQuit(self): self.DoLogout() QtGui.qApp.quit()' – Aleksandar
您可以遍历列表并在每个窗口小部件上调用disposeLater,清除列表还应该处理所有窗口,因为它们之前没有保持打开状态(至少如果没有其他参考)。 – mata