PyQt5中QTableWidget如何彈出菜單的示例代碼
QTableWidget是Qt程序中常用的顯示數(shù)據(jù)表格的控件,類似于c#中的DataGrid。QTableWidget是QTableView的子類,它使用標準的數(shù)據(jù)模型,并且其單元數(shù)據(jù)是通過QTableWidgetItem對象來實現(xiàn)的,使用QTableWidget時就需要QTableWidgetItem。用來表示表格中的一個單元格,整個表格就是用各個單元格構建起來的
在PyQt5中,常需要對表格進行右擊后彈出菜單,要實現(xiàn)這個操作就是兩個問題:1. 如何彈出菜單。2. 如何在滿足條件的情況下彈出菜單
在本文中簡要介紹了一個方法來解決這個問題(附在代碼中,大約從第60行開始)
from PyQt5 import QtCore from PyQt5.QtCore import QSize, Qt from PyQt5.QtGui import * from PyQt5.QtWidgets import * ''' 如何彈出菜單 如何在滿足條件的情況下彈出菜單 ''' class TableWidgetContextMenu(QWidget): def __init__(self): super(TableWidgetContextMenu, self).__init__() self.initUI() def initUI(self): self.setWindowTitle("在表格中顯示上下文菜單") self.resize(500, 300) layout = QHBoxLayout() self.tableWidget = QTableWidget() self.tableWidget.setRowCount(5) self.tableWidget.setColumnCount(3) layout.addWidget(self.tableWidget) self.tableWidget.setHorizontalHeaderLabels(['姓名', '性別', '年齡']) # 第一行 Item1 = QTableWidgetItem("老王") self.tableWidget.setItem(0, 0, Item1) Item2 = QTableWidgetItem("男") self.tableWidget.setItem(0, 1, Item2) Item3 = QTableWidgetItem("30") self.tableWidget.setItem(0, 2, Item3) # 第二行 Item1 = QTableWidgetItem("小王") self.tableWidget.setItem(1, 0, Item1) Item2 = QTableWidgetItem("男") self.tableWidget.setItem(1, 1, Item2) Item3 = QTableWidgetItem("28") self.tableWidget.setItem(1, 2, Item3) # 第三行 Item1 = QTableWidgetItem("小紅") self.tableWidget.setItem(2, 0, Item1) Item2 = QTableWidgetItem("女") self.tableWidget.setItem(2, 1, Item2) Item3 = QTableWidgetItem("18") self.tableWidget.setItem(2, 2, Item3) # 允許彈出菜單 self.tableWidget.setContextMenuPolicy(Qt.CustomContextMenu) # 將信號請求連接到槽(單擊鼠標右鍵,就調用方法) self.tableWidget.customContextMenuRequested.connect(self.generateMenu) self.setLayout(layout) # pos為點擊的位置 def generateMenu(self, pos): print(pos) # 得到索引 for i in self.tableWidget.selectionModel().selection().indexes(): rowNum = i.row() # 如果選擇的行索引小于1,彈出上下文菜單 if rowNum < 3: menu = QMenu() item1 = menu.addAction("菜單1") item2 = menu.addAction("菜單2") item3 = menu.addAction("菜單3") # 使菜單在正常位置顯示 screenPos = self.tableWidget.mapToGlobal(pos) # 單擊一個菜單項就返回,使之被阻塞 action = menu.exec(screenPos) if action == item1: print('選擇菜單1', self.tableWidget.item(rowNum, 0).text()) if action == item2: print('選擇菜單2', self.tableWidget.item(rowNum, 0).text()) if action == item3: print('選擇菜單3', self.tableWidget.item(rowNum, 0).text()) else: return if __name__ == "__main__": app = QApplication(sys.argv) main = TableWidgetContextMenu() main.show() sys.exit(app.exec_())
到此這篇關于PyQt5中QTableWidget如何彈出菜單的示例代碼的文章就介紹到這了,更多相關PyQt5 QTableWidget 彈出菜單內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python實現(xiàn)不同文件夾下的函數(shù)相互調用
這篇文章主要介紹了python實現(xiàn)不同文件夾下的函數(shù)相互調用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08詳解Python匿名函數(shù)(lambda函數(shù))
這篇文章主要介紹了Python匿名函數(shù)(lambda函數(shù)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04Python?colorama?彩色打印實現(xiàn)代碼
這篇文章主要介紹了Python?colorama?彩色打印實現(xiàn)代碼,將介紹的類為Back,?它實現(xiàn)了與?Fore?類相同的九個關鍵字:BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE、RESET,感興趣的朋友一起看看吧2022-04-04獨立進程使用django模型及django.setup()使用
這篇文章主要介紹了獨立進程使用django模型(django.setup()使用),它提供了一種簡單且高效的方式來利用Django強大的功能,并使你的代碼更易于維護和擴展,需要的朋友可以參考下2023-07-07python處理json字符串(使用json.loads而不是eval())
eval 跟json.loads 是不一樣的函數(shù),是有實現(xiàn)不一樣功能的地方,但是在某些地方它們兩個函數(shù)的功能是一樣的,本文就詳細介紹一下2021-09-09