import sys
from PyQt5.Qt import *
class CPushButton(QPushButton):
rightClicked = pyqtSignal([str], [int], [str, int])
def mousePressEvent(self, e) -> None:
if e.button() == Qt.RightButton:
self.rightClicked[str].emit("Qt.RightButton")
self.rightClicked[int].emit(Qt.RightButton)
self.rightClicked[str, int].emit("Qt.RightButton", Qt.RightButton)
return super(CPushButton, self).mousePressEvent(e)
class Window(QWidget):
def __init__(self):
super().__init__()
self.setup_ui()
def setup_ui(self):
self.setWindowTitle("Qt桌面应用程序")
self.resize(300, 300)
self.push_button = CPushButton("按钮", self)
self.push_button.setObjectName("pushButton")
# self.push_button.clicked.connect(lambda value: print("right clicked", value))
QMetaObject.connectSlotsByName(self)
@pyqtSlot(bool)
def on_pushButton_clicked(self, value):
print("left clicked", value)
@pyqtSlot(str, int)
def on_pushButton_rightClicked(self, value_1, value_2):
print("right clicked", value_1, value_2)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())