脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页脚本专栏python→ PyQt5 QTableWidget 弹出菜单

PyQt5中QTableWidget如何弹出菜单的示例代码

  更新时间:2020年02月23日 14:54:41  作者:qq_45690024 
这篇文章主要介绍了PyQt5中QTableWidget如何弹出菜单的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid。QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的,使用QTableWidget时就需要QTableWidgetItem。用来表示表格中的一个单元格,整个表格就是用各个单元格构建起来的

在PyQt5中,常需要对表格进行右击后弹出菜单,要实现这个操作就是两个问题: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 弹出菜单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

    • 这篇文章主要介绍了Python使用socket_TCP实现小文件下载功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
      2020-10-10
    • 这篇文章主要介绍了Keras中 ImageDataGenerator函数的参数用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
      2020-07-07
    • argparse库是python下的一个命令行参数管理库,支持int、str、float、bool、数组等5种基本数据类型,这篇文章主要介绍了Python argparse库的基本使用,需要的朋友可以参考下
      2022-07-07
    • 今天小编就为大家分享一篇python 统计列表中不同元素的数量方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
      2018-06-06
    • 本文主要介绍了python使用pyodbc连接sqlserver,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
      2023-02-02
    • 下面小编就为大家带来一篇python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2017-10-10
    • 这篇文章主要给大家分享 7个关于Python的经典基础案例,列表排序、调换字典键值、删除列表中的重复元素、输出质数、判断是一年中第几天、猜数字、进制转换;,需要的朋友可以参考一下
      2021-11-11
    • 本篇文章给大家详细讲解了用python写的一个微信跳一跳辅助脚本的源码,对此有兴趣的朋友参考下吧。
      2018-01-01
    • 这篇文章主要介绍了python实现list元素按关键字相加减的方法,结合具体实例形式分析了Python针对list元素遍历与运算相关操作技巧,需要的朋友可以参考下
      2017-06-06
    • 这篇文章主要介绍了Python之列表推导式最全汇总(中篇),本文章内容详细,通过案例可以更好的理解列表推导式的相关知识,本模块分为了三部分,本次为中篇,需要的朋友可以参考下
      2023-01-01

    最新评论