Last Updated on 2021-06-04 by Clay
如同標題所述,今天希望能夠紀錄一下『在界面上點擊右鍵,便打開選項菜單』這一常見的動作——當然,也不是非得使用右鍵不可啦,只是相對常見而已。
如果我的敘述難以讓人聽明白的話,可以直接看看效果圖吧:
大致上就是如此。那麼今天就來紀錄怎麼撰寫這樣的程式吧!
QMenu
基本上,要完成這種功能,最重要的便是要建立一個自己的 QMenu 物件。以下便是一個簡單的 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:
由於選項的功能我已經寫好了,故按下 Hello World 的時候會印出 Hello World、按下 GoodBye 的時候會印出 Goodbye、按下 Exit 的時候就真的離開了。
詳細的程式碼運作請直接參考上方的程式碼吧。