gpt4 book ai didi

python - PyQt - 将右键单击添加到小部件

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:41 25 4
gpt4 key购买 nike

我正在使用 PyQt,我想添加一个右键单击到一个小部件,但是我在网上找不到关于这个主题的任何代码。

你怎么做到的?

最佳答案

您只需覆盖处理它的方法。

在这种情况下,您将重写 mousePressEvent,看看它是否有意义并能满足您的需要。

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget


class MyWidget(QWidget):


def __init__(self):
super(MyWidget, self).__init__()

def mousePressEvent(self, QMouseEvent):
if QMouseEvent.button() == Qt.LeftButton:
print("Left Button Clicked")
elif QMouseEvent.button() == Qt.RightButton:
#do what you want here
print("Right Button Clicked")

if __name__ == "__main__":

app = QApplication(sys.argv)
mw = MyWidget()
mw.show()
sys.exit(app.exec_())

另一个好的方法是在您的对象中安装一个事件过滤器并覆盖它的 eventFilter。在那个方法里面你会做你想要的。请记住,您始终可以利用 pyqtSignal 作为良好实践并调用另一个对象来完成这项工作,而不是使用大量逻辑重载该方法。

这是另一个小例子:

import sys

from PyQt5.QtCore import QEvent
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget

class MyWidget(QWidget):

def __init__(self):
super(MyWidget, self).__init__()
self.installEventFilter(self)

def eventFilter(self, QObject, event):
if event.type() == QEvent.MouseButtonPress:
if event.button() == Qt.RightButton:
print("Right button clicked")
return False

if __name__ == "__main__":

app = QApplication(sys.argv)
mw = MyWidget()
mw.show()
sys.exit(app.exec_())

注意:请记住,最后一个示例将接收所有类型的事件,因此您必须小心并确保它是您想要的,并且不会在运行时破坏您的事件的应用程序调用方法那不存在,因为它不是那种。例如,如果您在调用 event.button() 之前没有确定它是 QEvent.MouseButtonPress,您的应用程序当然会中断。

还有其他方法可以做到这一点,这些是最广为人知的方法。

关于python - PyQt - 将右键单击添加到小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44264157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com