必须在QPaintDevice之前构造QApplication

时间:2014-09-23 13:44:43

标签: python python-2.7 pyqt4 spyder

我的问题是,当我使用Spyder时,在我不得不重新安装Spyder之前工作正常的代码现在要求我每次运行时重新启动Spyder(退出Python x,y)它。

我以为我昨天已经解决了这个问题,但由于某种原因,今天我的问题又回来了。

昨天有人建议this answer,它暂时有效。

我试过了:

import sys
from PyQt4 import QtGui

class CompiledWindow(QtGui.QWidget):
    def __init__(self, parent = None):
......

cw = CompiledWindow()
cw.show()

我得到的错误是:

QWidget: Must construct a QApplication before a QPaintDevice

然后我回到了这里(与点之前一样)

app = QtGui.QApplication(sys.argv)
cw = CompiledWindow()
cw.show()

现在它运行正常,我第一次运行它,第二次,我得到了与以前相同的错误。第三次,它告诉我我没有选择外壳。

我真的不能从根本上理解它所抱怨的内容。如果我必须在QPaintDevice之前构造一个QApplication,为什么它第一次运行正常?显然,这是第一次发生。为什么后续运行会给我错误?此外,当我按照链接答案中的建议摆脱应用程序部分时,它工作......直到今天早上。


ETA这是所要求的最小工作示例。谢谢!

import sys
from PyQt4 import QtGui

class CompiledWindow(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.setWindowTitle('Enter data below to generate report')
        names = ['Name Report', 'Open Logo Picture']
        grid = QtGui.QGridLayout(self)

        self.report_title_ask = QtGui.QLineEdit()
        self.rt = QtGui.QLabel()
        self.rt.setText(names[0])
        grid.addWidget(self.report_title_ask, 0, 1)
        grid.addWidget(self.rt, 0, 0)

        self.Logo_button = QtGui.QPushButton(names[1], self)
        self.LogoLabel = QtGui.QLabel()
        self.Logo_button.clicked.connect(self.logo_pic)
        grid.addWidget(self.Logo_button, 1, 0)
        grid.addWidget(self.LogoLabel, 1,1)

        self.done_button = QtGui.QPushButton()
        self.done_button.setText('Click this when all data is entered')
        self.done_button.clicked.connect(self.finish_input_click)
        grid.addWidget(self.done_button, 2,1)        

    def rt_button_click(self):
        self.report_title = self.report_title_ask.text()

    def logo_pic(self):
        self.Logo_picture = unicode(QtGui.QFileDialog.getOpenFileName())
        self.LogoLabel.setText(self.Logo_picture)

    def finish_input_click(self):
        self.report_title = self.report_title_ask.text()
        self.close()

app = QtGui.QApplication(sys.argv)
cw = CompiledWindow()
cw.show()

0 个答案:

没有答案