As mentioned in the title, today I want to record the common action of right-click and open a menu option. Of course it is not necessary to use the right button but it is relatively common.
It's hard to explain, it's better to demo it in practice:
That's roughly the case. So today, let’s record how to write such a program!
QMenu
Basically, to complete this function, the most important thing is to create your own QMenu object. The following is a simple Example:
# -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * class MainWindow(QWidget): def __init__(self): super(MainWindow, self).__init__() self.resize(400, 300) self.setWindowTitle('Main Window') # Menu self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.right_menu) def right_menu(self, pos): menu = QMenu() # Add menu options hello_option = menu.addAction('Hello World') goodbye_option = menu.addAction('GoodBye') exit_option = menu.addAction('Exit') # Menu option events hello_option.triggered.connect(lambda: print('Hello World')) goodbye_option.triggered.connect(lambda: print('Goodbye')) exit_option.triggered.connect(lambda: exit()) # Position menu.exec_(self.mapToGlobal(pos)) if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() sys.exit(app.exec_())
Output:
Since I have already written the function of the options, when I press Hello World, it will print Hello World, when I press GoodBye, it will print Goodbye, and when I press Exit, it will actually leave.
For detailed code operation, please directly refer to the code above.