本文主要是介绍解决pyqt5 控件右键菜单QMenu()出现后不消失的bug,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在用pyqt5(其实我用的是pyside2)写一个界面,在给QListWidget添加了右键菜单QMenu()之后,总是出现右键弹出菜单后,左键点击其他地方想关闭菜单,但是需要左键点击好多次才能将右键菜单关闭,而且在此期间,右键菜单还会跟着鼠标左键点击的位置到处跑。
经过一番查找,终于找到了bug的原因,是下面这两行代码的位置写错了
self.listWidget.setContextMenuPolicy(Qt.CustomContextMenu)
self.listWidget.customContextMenuRequested.connect(self.listWidget_fun) # 连接到右键菜单显示函数
我们都知道这两行代码是用来给控件添加右键菜单的,但是我最开始的时候,将这两行代码写在了一个函数中,而这个函数被一个buuton触发(用来改变QListWidget的内容),所以就造成了每次点击button后,上面两行代码就会被执行一次,也就是说我点一次button,就会给QListWidget添加一个右键菜单,所以我点击的次数越多,右键菜单就越多。
问题找到了以后就好办了,将上面两行代码写到主窗口的__init__函数中,让它们只在主窗口启动的时候执行一次。
这个bug就解决了
这篇关于解决pyqt5 控件右键菜单QMenu()出现后不消失的bug的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!