如何使用PythonQ正确关闭API中的QWidgetwindow

2024-09-19 23:45:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个可视化程序的API中使用Python2.7。在2016年的版本中,我用PySide创建了一个GUI,它工作得很好。现在在他们2017年的新版本中,他们从PySide更改为PythonQt,所以我的导入和一些命令必须更改,但到目前为止仍然有效。在

但是如果我关闭GUI并尝试继续工作,例如打开当前或新的项目,2017版本将退出,有时会出现错误消息,有时没有错误消息,但该消息根本没有帮助。在

如果我以与2016版相同的方式关闭GUI窗口,程序将关闭。奇怪的是,如果我使用close命令,如果我在windows7pro中独立运行我的窗口,程序中会显示一个错误(Traceback(最近的调用最后一次):File“”,第1152行,在closeEvent ValueError:slot quit()->;void需要QApplication实例作为第一个参数),我的GUI已关闭,我可以继续工作。在

所以我的GUI需要以某种方式关闭,到目前为止我还没有弄清楚。在

我的GUI是通过调用programs终端中的showMyGUI()-函数来打开的,在程序终端中可以执行python命令,或者按一个F按钮,这个函数链接到这个函数。在

# -*- coding: utf-8 -*-

import sys, os
progVers = getVredVersion()[:1]
if progVers == "8": #2016-version
    from PySide.QtCore import *
    from PySide.QtGui import *
elif progVers == "9": #2017-version
    from PythonQt.QtCore import *
    from PythonQt.QtGui import *

class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        grid = QGridLayout()
        grid.setSpacing(10)

        ...

        self.setWindowModality(Qt.ApplicationModal)
        self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.WindowMaximizeButtonHint)
        self.show()

    def closeEvent(self,event):
        progVers = getVredVersion()[:1]
        if progVers == "8":      
            QApplication.instance().quit()
        elif progVers == "9":
            QApplication.quit() #as used for standalone in Windows 7 Pro
        event.accept()

def showMyGUI():   
    app = QApplication.instance()
    window = MainWindow()
    app.exec_()

keyF11 = vrKey(Key_F11)
keyF11.connect(showMyGUI)

有人能告诉我如何正确关闭我的图形用户界面吗?在


Tags: fromimport命令self程序版本消息错误
1条回答
网友
1楼 · 发布于 2024-09-19 23:45:10

我的解决方案是: MainWindow现在继承了QDialog的形式,需要父元素(def __init__(self, parent=None):和{})。在创建MainWindow-对象时,父窗口可以在2016版本中使用verdMainWindow()访问,而在2017版本中可以使用vrMainWindow访问。我用这种方式创建一个该类的对象window=MainWindow(vrMainWindow)。在

相关问题 更多 >