PyQt5中QTableWidget如何弹出菜单的示例代码
QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid。QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的,使用QTableWidget时就需要QTableWidgetItem。用来表示表格中的一个单元格,整个表格就是用各个单元格构建起来的
在PyQt5中,常需要对表格进行右击后弹出菜单,要实现这个操作就是两个问题:1.如何弹出菜单。2.如何在满足条件的情况下弹出菜单
在本文中简要介绍了一个方法来解决这个问题(附在代码中,大约从第60行开始)
fromPyQt5importQtCore fromPyQt5.QtCoreimportQSize,Qt fromPyQt5.QtGuiimport* fromPyQt5.QtWidgetsimport* ''' 如何弹出菜单 如何在满足条件的情况下弹出菜单 ''' classTableWidgetContextMenu(QWidget): def__init__(self): super(TableWidgetContextMenu,self).__init__() self.initUI() definitUI(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为点击的位置 defgenerateMenu(self,pos): print(pos) #得到索引 foriinself.tableWidget.selectionModel().selection().indexes(): rowNum=i.row() #如果选择的行索引小于1,弹出上下文菜单 ifrowNum<3: menu=QMenu() item1=menu.addAction("菜单1") item2=menu.addAction("菜单2") item3=menu.addAction("菜单3") #使菜单在正常位置显示 screenPos=self.tableWidget.mapToGlobal(pos) #单击一个菜单项就返回,使之被阻塞 action=menu.exec(screenPos) ifaction==item1: print('选择菜单1',self.tableWidget.item(rowNum,0).text()) ifaction==item2: print('选择菜单2',self.tableWidget.item(rowNum,0).text()) ifaction==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如何弹出菜单的示例代码的文章就介绍到这了,更多相关PyQt5QTableWidget弹出菜单内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。