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

PySide6 QDateEdit关闭弹窗致系统崩溃问题咨询

PySide6 QDateEdit关闭日历弹窗触发系统崩溃问题分析

问题现象

在Ubuntu 22.04环境中,使用PySide6创建启用日历弹窗的QDateEdit控件,点击唤起日历弹窗后,再次点击箭头或通过其他方式关闭弹窗时,会直接导致gnome-shell崩溃(系统日志/var/log/syslog中记录gnome-shell[4736]: GNOME Shell crashed with signal 11),进而引发整个系统崩溃。

最小可复现代码如下:

from PySide6 import QtWidgets


class DateEditGui(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        widget = QtWidgets.QWidget()
        self.vertical_layout = QtWidgets.QVBoxLayout()

        self.date_picker = QtWidgets.QDateEdit()
        self.date_picker.setCalendarPopup(True)
        self.vertical_layout.addWidget(self.date_picker)

        widget.setLayout(self.vertical_layout)
        self.setCentralWidget(widget)


app = QtWidgets.QApplication()
window = DateEditGui()
window.show()
app.exec_()

环境与测试对比

  • 崩溃触发环境:Ubuntu 22.04、Python 3.10.6、PySide6 6.4.0.1、Wayland显示服务器
  • 无问题场景:
    • 将显示服务器切换为Xorg后,功能恢复正常
    • 替换为PySide2时,示例代码可正常运行
    • 在Ubuntu 20.04 + Python 3.9 + PySide6环境下,QDateEdit功能无异常

问题归属判断

这是Qt与Ubuntu 22.04上Wayland环境的兼容性问题,属于已知的Qt适配Bug,并非仅PySide6独有:

  • 问题根源在于Qt 6.4.x版本与Ubuntu 22.04自带的Wayland compositor(gnome-shell)交互逻辑存在冲突,导致gnome-shell收到SIGSEGV信号崩溃
  • PySide2基于Qt 5,Qt 5对Wayland的适配逻辑与Qt 6不同,因此未触发该问题;Ubuntu 20.04的gnome-shell版本及Wayland栈与22.04存在差异,也避开了这个冲突点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:15:49