1

PyQt4 用に書かれた Mark Summerfield の Rapid GUI プログラミング ブックを使用しており、PyQt5 を使用しています。いくつかのことは異なるはずです。

Ubuntu 13.04 を実行している Linux マシンでこれが失敗する理由を誰にも理解できますか? Mint 15 で動作しますが、セグメンテーション違反で終了することがあります。PyQt4 と PyQt5 の違いに関係していると思います。qt-project.org の Web サイトで C++ の実装を調べています。これまでのところ、QVBoxLayout は QDialog を継承しており、setLayout 関数を持っていることがわかります。ただし、_ init _関数の最後の行をコメント アウトすると、プログラムをクラッシュせずに実行できますが、QDialog ボックスにウィジェットを追加する必要もありません。

import sys
import PyQt5.QtCore
import PyQt5.QtGui
import PyQt5.QtWidgets

class Form(PyQt5.QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.browser = PyQt5.QtWidgets.QTextBrowser()
        self.lineEdit = PyQt5.QtWidgets.QLineEdit("default statement here")
        self.lineEdit.selectAll()
        layout = PyQt5.QtWidgets.QVBoxLayout()
        layout.addWidget(self.browser)
        layout.addWidget(self.lineEdit)
        self.setLayout(layout)    # <--- program seems to crash here



app = PyQt5.QtWidgets.QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

次のような最初のエラー メッセージが表示され、約 10 回繰り返されます。

(python3:9896): Gtk-CRITICAL **: IA__gtk_widget_style_get: assertion `GTK_IS_WIDGET (widget)' failed

次に、次のブロックが続きます。これは、プログラムを強制終了するまで繰り返されます。

QXcbShmImage: shmget() failed (22) for size -524284 (65535x65535)
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::translate: Painter not active
QPainter::save: Painter not active
QPainter::setClipRect: Painter not active
QPainter::pen: Painter not active
QPainter::setPen: Painter not active
QPainter::pen: Painter not active
QPainter::setPen: Painter not active
QPainter::restore: Unbalanced save/restore
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setClipRect: Painter not active
[etc, etc, etc...]
4

1 に答える 1

1

問題は QTextBrowser のサイズです。

このバグを参照してください:

https://bugreports.qt-project.org/browse/QTBUG-32527

于 2013-07-21T09:23:20.577 に答える