第五季度:qt.qpa.xcb启动应用程序时出错

2024-10-06 12:29:15 发布

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

我正在将我的应用程序从pyqt4迁移到pyqt5。 除了这个问题我一直在应用程序上发布:

$ python3 /tmp/loading.py 
qt.qpa.xcb: failed to initialize XRandr
qt.qpa.xcb: X server does not support XInput 2

我的应用程序有一个加载屏幕,当它加载一些内容时我会显示:

^{pr2}$

在pyqt4中它工作得很好,我看到这个简单的加载窗口,然后它就关闭了。 另一方面,在pyqt5中,我在shell中得到了上面的错误,窗口永远不会显示出来。在

编辑1

app = QtWidgets.QApplication(sys.argv)
loading_screen = LoadingScreen()
loading_screen.show()
foo()
loading_screen.close()
sys.exit(app.exec_())

编辑2

import sys
import time

from PyQt4 import QtGui, QtCore

from drivertest.ui.gui.resources.resources import Images


class Form(QtGui.QDialog):
    """ Just a simple dialog with a couple of widgets
    """
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.browser = QtGui.QTextBrowser()
        self.setWindowTitle('Just a dialog')
        self.lineedit = QtGui.QLineEdit("Write something and press Enter")
        self.lineedit.selectAll()
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.browser)
        layout.addWidget(self.lineedit)
        self.setLayout(layout)
        self.lineedit.setFocus()

    def foo(self):
        for _ in range(100000000):
            pass


class LoadingScreen(QtGui.QMainWindow):
    def __init__(self):
        super(LoadingScreen, self).__init__()
        self.setWindowTitle('Loading DriVerTest...')
        self.setWindowIcon(QtGui.QIcon(Images.LOGO))
        self.setMaximumSize(600, 338)
        self.setMinimumSize(600, 338)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        self.palette = QtGui.QPalette()
        pixmap = QtGui.QPixmap(Images.LOADING_BACKGROUND)
        brush = QtGui.QBrush(pixmap.scaled(self.size(), QtCore.Qt.IgnoreAspectRatio))
        self.palette.setBrush(QtGui.QPalette.Background, brush)
        self.setPalette(self.palette)

        center = QtGui.QDesktopWidget().availableGeometry().center()
        self.move(center)



app = QtGui.QApplication(sys.argv)
loading_screen = LoadingScreen()
loading_screen.show()

g = Form()
g.foo()

loading_screen.close()

g.show()

sys.exit(app.exec_())

Tags: importselfapp应用程序fooinitshowsys