PyQt5 窗口崩溃:mouseMoveEvent 函数为何失效?

聖光之護
发布: 2024-11-09 20:30:02
原创
561人浏览过

pyqt5 窗口崩溃:mousemoveevent 函数为何失效?

mousemoveevent 谜样崩溃

在上述 pyqt5 程序中,mousemoveevent 函数的执行导致了窗口崩溃。错误调试显示“'mwindow' object has no attribute 'mouse_x'”,这表明该变量在 mousemoveevent 中未定义。

深入研究后,发现问题的根源在于 mousepressevent 函数中缺少一个条件判断。在该函数中,mousex 和 mousey 变量初始化为鼠标全局坐标,但如果没有先按下鼠标,这些变量将保持未初始化状态。

当触发 mousemoveevent 时,mousex 和 mousey 变量的值为 none,导致对它们的进一步引用引发属性错误。在 mousereleaseevent 中不会出现此问题,因为在松开鼠标之前,mousex 和 mousey 已经得到正确赋值。

解决方案

为了解决这个问题,需要在 mousepressevent 函数中添加一个条件判断,以检查鼠标是否已被按下:

def mousePressEvent(self, evt) :
    if evt.button() == Qt.LeftButton:
        self.mousex = evt.globalX()
        self.mousey = evt.globalY()

        self.btn_x = self.btn.x()
        self.btn_y = self.btn.y()
登录后复制

此更改确保了 mousex 和 mousey 只有在鼠标左键按下时才被赋值,防止在鼠标未按下时这些变量未定义。这样,程序现在应该能够在不崩溃的情况下执行 mousemoveevent。

以上就是PyQt5 窗口崩溃:mouseMoveEvent 函数为何失效?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号