You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt6在Wayland下用setCellWidget后编辑QTableWidget崩溃(Qt6.7已修复)

编辑说明:此问题已在Qt 6.7更新中修复。

运行下方代码后,若尝试双击或直接输入编辑第一个单元格,窗口会冻结并关闭,输出信息为Segmentation fault (core dumped)。

禁用单元格编辑或改用PyQt5可解决此问题。

若取消设置WAYLAND_DISPLAY环境变量,强制程序在Xwayland下运行,程序不会崩溃,此时会输出:

Failed to create wl_display (Connection refused)
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.

但程序仍可正常运行。

我的需求是在表格单元格内显示图片,尝试通过创建标签、设置其pixmap为图片,再使用table.setCellWidget实现,但遇到了此问题。

这似乎是PyQt6/Qt的bug,但如果不是的话,有没有不使用上述方法的修复方案?

以下是我的PyQt6版本信息(我尝试过用pip安装和使用包管理器提供的系统包):

PyQt6      6.6.1
PyQt6-Qt6  6.6.3
PyQt6-sip  13.6.0

代码:

from PyQt6 import QtWidgets


class Crash(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Crash")
        self.resize(800, 600)
        self.show()
        self.init_ui()

    def init_ui(self):
        self.table = QtWidgets.QTableWidget()
        self.setCentralWidget(self.table)

        self.table.setColumnCount(2)
        self.table.setHorizontalHeaderLabels(["text", "widget"])

        self.table.insertRow(0)
        self.table.setItem(0, 0, QtWidgets.QTableWidgetItem("text"))

        widget = QtWidgets.QWidget()

        self.table.setCellWidget(0, 1, widget)


if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    window = Crash()
    app.exec()

按照Stack Overflow上的方法启用日志记录后,生成了xwayland和wayland两个日志文件。


内容的提问来源于stack exchange,提问作者fieryhenry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:00:56