PyQt5 QTableWidget

  • QTableWidget 示例1
  • QTableWidget 示例2
  • QTableWidget 示例3
  • QTableWidget 示例4
  • QTableWidget 示例5
  • QTableWidget 示例6

QTableWidget 示例1

演示QTableWidget控件的基本使用方法

import sys
from PyQt5.QtWidgets import (QWidget, QTableWidget, QTableWidgetItem, QHBoxLayout, QApplication, QAbstractItemView, QHeaderView)
from PyQt5.QtCore import Qtclass Table(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("QTableWidget Demo")self.resize(400, 300)conLayout = QHBoxLayout()tableWidget = QTableWidget()tableWidget.setRowCount(4)tableWidget.setColumnCount(3)conLayout.addWidget(tableWidget)# 设置行标题tableWidget.setHorizontalHeaderLabels(['姓名','性别','体重(kg)'])# 设置列标题tableWidget.setVerticalHeaderLabels(['行1','行2','行3','行4'])# 设置水平方向自适应伸缩模式tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)# 将行和列的宽度,高度设置为与所显示的内容的宽度,高度相匹配tableWidget.resizeColumnsToContents()tableWidget.resizeRowsToContents()# 隐藏表格的表头# tableWidget.horizontalHeader().setVisible(False)# tableWidget.verticalHeader().setVisible(False)# 设置编辑规则tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)# QAbstractItemView.NoEditTriggers# QAbstractItemView.CurrentChanged# QAbstractItemView.DoubleClicked# QAbstractItemView.SelectedClicked# QAbstractItemView.EditKeyPressed# QAbstractItemView.AnyKeyPressed# QAbstractItemView.AllEditTriggers# 设置选择行为tableWidget.setSelectionBehavior(QAbstractItemView.SelectItems)# QAbstractItemView.SelectItems# QAbstractItemView.SelectRows# QAbstractItemView.SelectColumns# Qt.AlignLeft# Qt.AlignRight# Qt.AlignHCenter# Qt.AlignJustify# Qt.AlignTop# Qt.AlignBottom# Qt.AlignVCenter# Qt.AlignBaselinenewItem = QTableWidgetItem("张三")    tableWidget.setItem(0, 0, newItem)newItem.setTextAlignment(Qt.AlignLeft)newItem = QTableWidgetItem("男")tableWidget.setItem(0, 1, newItem)newItem = QTableWidgetItem("160") tableWidget.setItem(0, 2, newItem)self.setLayout(conLayout)if __name__ == "__main__":app = QApplication(sys.argv)win = Table()win.show()sys.exit(app.exec_())

QTableWidget 示例2

添加控件类型条目

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qtclass MyTableWidget(QWidget):def __init__(self, parent=None):super(MyTableWidget, self).__init__(parent)self.initUI()def initUI(self):self.setWindowTitle("QTableWidget Demo 2")self.resize(300, 200)layout = QHBoxLayout()tableWidget = QTableWidget()tableWidget.setRowCount(4)tableWidget.setColumnCount(3)tableWidget.setHorizontalHeaderLabels(['一','二','三'])newItem = QTableWidgetItem("Java")tableWidget.setItem(0,0, newItem)comBox = QComboBox()comBox.addItem("男")comBox.addItem("女")comBox.setStyleSheet("QComboBox{margin:3px};")tableWidget.setCellWidget(0,1, comBox)modifyBtn = QPushButton("修改")modifyBtn.setStyleSheet("QPushButton{margin:3px};")tableWidget.setCellWidget(0, 2, modifyBtn)# item = tableWidget.findItems("Java", Qt.MatchExactly)# row = item[0].row()# tableWidget.verticalScrollBar().setSliderPosition(2)layout.addWidget(tableWidget)self.setLayout(layout)if __name__ == "__main__":app = QApplication(sys.argv)win = MyTableWidget()win.show()sys.exit(app.exec_())

QTableWidget 示例3

模拟通过鼠标滚轮快速定位到指定项

import sysfrom PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qtclass Table(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("QTableWidget Demo 3")self.resize(600, 800)conLayout = QHBoxLayout()tableWidget = QTableWidget()tableWidget.setRowCount(30)tableWidget.setColumnCount(4)conLayout.addWidget(tableWidget)for i in range(30):for j in range(4):itemContent = '(%d,%d)' % (i, j)tableWidget.setItem(i, j, QTableWidgetItem(itemContent))self.setLayout(conLayout)# 遍历表格查找对应项text = "(10,1)"items = tableWidget.findItems(text, Qt.MatchExactly)item = items[0]# 选中单元格#item.setSelected(True)# 设置字体为红色item.setForeground(QBrush(QColor(255, 0, 0)))row = item.row()# 模拟通过鼠标滚轮快速定位到指定项tableWidget.verticalScrollBar().setSliderPosition(row)if __name__ == "__main__":app = QApplication(sys.argv)win = Table()win.show()sys.exit(app.exec_())

QTableWidget 示例4

设置字体颜色,背景颜色,设置内容字体,排序,隐藏表格头等。

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qtclass Table(QWidget):def __init__(self):super().__init__()self.setWindowTitle("QWidget Demo 3")layout = QHBoxLayout()tableWidget = QTableWidget()tableWidget.setRowCount(10)tableWidget.setColumnCount(3)tableWidget.setRowHeight(0, 100)tableWidget.setColumnWidth(0, 50)tableWidget.setShowGrid(False)tableWidget.verticalHeader().setVisible(False)# 设置 前景,背景颜色newItem = QTableWidgetItem("张三")newItem.setForeground(QBrush(QColor(255, 0, 0)))newItem.setBackground(QBrush(QColor(0, 255, 0)))tableWidget.setItem(0, 0, newItem)# 设置字体newItem = QTableWidgetItem("男")newItem.setFont(QFont("Times", 16, QFont.Black))tableWidget.setItem(0, 1, newItem)newItem = QTableWidgetItem("160")newItem.setFont(QFont("times", 12, QFont.Bold))tableWidget.setItem(0, 2, newItem)# Qt.DescendingOrder 降序# Qt.AscendingOrder 升序newItem = QTableWidgetItem("李四")tableWidget.setItem(1,0, newItem)newItem = QTableWidgetItem("男")tableWidget.setItem(1, 1, newItem)newItem = QTableWidgetItem("172")tableWidget.setItem(1, 2, newItem)newItem = QTableWidgetItem("小红")tableWidget.setItem(2, 0, newItem)newItem = QTableWidgetItem("女")tableWidget.setItem(2, 1, newItem)newItem = QTableWidgetItem("150")tableWidget.setItem(2, 2, newItem)# 第3列 按升序排序tableWidget.sortItems(2, Qt.DescendingOrder)layout.addWidget(tableWidget)self.setLayout(layout)if __name__ == "__main__":app = QApplication(sys.argv)win = Table()win.show()sys.exit(app.exec_())

QTableWidget 示例5

表格显示图标

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt# 新手class Table(QWidget):def __init__(self, parent=None):super(Table, self).__init__(parent)self.setWindowTitle("QWidget 显示图片")self.initUI()def initUI(self):layout = QHBoxLayout()tableWidget = QTableWidget()tableWidget.setColumnCount(3)tableWidget.setRowCount(5)tableWidget.setHorizontalHeaderLabels(['图片1', '图片2', '图片3'])tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)tableWidget.setIconSize(QSize(300, 200))for i in range(3): # 让列宽和图片相同tableWidget.setColumnWidth(i, 300)for i in range(5):tableWidget.setRowHeight(i, 200)for k in range(15):i = k/3j = k%3item = QTableWidgetItem()item.setFlags(Qt.ItemIsEnabled) # 用户点击表格时,图片被选中icon = QIcon(r'D:\project\python\pyqt5\advance_high\images\bao%d.png' % k)# icon = QIcon(r'D:\project\python\pyqt5\advance_high\images\bao0.png')item.setIcon(QIcon(icon))tableWidget.setItem(i, j, item)tableWidget.itemClicked.connect(self.handleItemClick)layout.addWidget(tableWidget)self.setLayout(layout)def handleItemClick(self, item):print('you selected => ', item.row(), item.column())if __name__ == "__main__":app = QApplication(sys.argv)win = Table()win.show()sys.exit(app.exec_())

QTableWidget 示例6

支持右键弹窗菜单

import sys
from PyQt5.QtWidgets import (QMenu, QPushButton, QWidget, QTableWidget, QTableWidgetItem,QHBoxLayout, QApplication, QDesktopWidget, QHeaderView)
from PyQt5.QtCore import pyqtSignal, QObject, pyqtSlot
from PyQt5.QtCore import Qt# 支持右键弹窗菜单class Table(QWidget):def __init__(self, parent=None):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("QTableWidget Demo 6")self.resize(500, 300)conLayout = QHBoxLayout()self.tableWidget = QTableWidget()self.tableWidget.setRowCount(5)self.tableWidget.setColumnCount(3)conLayout.addWidget(self.tableWidget)self.tableWidget.setHorizontalHeaderLabels(['姓名', '性别', '体重'])self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)newItem = QTableWidgetItem("张三")self.tableWidget.setItem(0, 0, newItem)newItem = QTableWidgetItem("男")self.tableWidget.setItem(0, 1, newItem)newItem = QTableWidgetItem("160")self.tableWidget.setItem(0, 2, newItem)newItem = QTableWidgetItem("李四")self.tableWidget.setItem(1, 0, newItem)newItem = QTableWidgetItem("女")self.tableWidget.setItem(1, 1, newItem)newItem = QTableWidgetItem("170")self.tableWidget.setItem(1, 2, newItem)# 允许右键产生菜单self.tableWidget.setContextMenuPolicy(Qt.CustomContextMenu)#将右键菜单绑定到槽函数generateMenuself.tableWidget.customContextMenuRequested.connect(self.generateMenu)self.setLayout(conLayout)def generateMenu(self, pos):row_num = -1for i in self.tableWidget.selectionModel().selection().indexes():row_num = i.row()# 表格中只有两条有效数据,所以只在前两行支持右键弹出菜单if row_num < 2:menu = QMenu()item1 = menu.addAction(u"选项一")item2 = menu.addAction(u"选项二")item3 = menu.addAction(u"选项三")action = menu.exec(self.tableWidget.mapToGlobal(pos))if action == item1:print('第一项', self.tableWidget.item(row_num, 0).text(), self.tableWidget.item(row_num, 1).text(), self.tableWidget.item(row_num, 2).text())elif action == item2:print("第二项", self.tableWidget.item(row_num, 0).text(), self.tableWidget.item(row_num, 1).text(), self.tableWidget.item(row_num, 2).text())elif action == item3:print("第三项", self.tableWidget.item(row_num, 0).text(), self.tableWidget.item(row_num, 1).text(), self.tableWidget.item(row_num, 2).text())else:returnif __name__ == "__main__":app = QApplication(sys.argv)win = Table()win.show()sys.exit(app.exec_())

PyQt5 QTableWidget相关推荐

  1. python3的pyqt5 qtablewidget按数据大小排列_InnoDB为什么要选择B+树来存储数据?

    关于InnoDB索引,我们可能知道InnDB索引是用B+树实现的,而B+树就是一种能优化查询速度的数据结构.但我们又没想过这样一个问题,能优化查询速度的数据结构有很多,为什么InnoDB要采用B+树? ...

  2. PyQt5 QTableWidget 删除所有行

    self.tableWidget.setRowCount(0) self.tableWidget.clearContents()

  3. python3GUI--打造一款音乐播放器By:PyQt5(附下载地址)

    文章目录 一.准备工作 1.PyQt5 2.qtawesome 二.预览 1.启动 2.歌曲搜索 3.歌曲播放 4.评论查看 5.自定义背景 6.设置-基本设置 7.设置-高级设置 8.定时任务 三. ...

  4. Python QT5设计UI界面教程

    简介:PyQT5开发常用知识,零基础上手,需配合我之前写的博文,配置好QT设计工具和ui文件转py文件的工具.博文为:使用Python PyQt5实现一个简单的图像识别软件:页面效果如下: 1.设计菜 ...

  5. PyQt5试验:基于QTableWidget的应用

    PyQt5试验:基于QTableWidget的应用 前言: 大家好,这里是Seon塞翁.本文内容为基于 QtableWidget 控件,结合时间管理四象限思想,制作一个简易的任务优先度计算器. 需先对 ...

  6. PyQT5 (四十三) 在 QTableWidget 表格中设置单元格的字体和颜色 的案例

    在 QTableWidget 表格中设置单元格的字体和颜色 的案例 import sysfrom PyQt5 import QtPrintSupport, QtGui from PyQt5.QtCor ...

  7. PyQT5 (四十六) 在 QTableWidget 表格中设置合并单元格 的案例

    在 QTableWidget 表格中设置合并单元格 的案例 setSpan(row, col, 要合并的行数, 要合并的列数) import sysfrom PyQt5 import QtPrintS ...

  8. PyQt5高级界面控件之QTableWidget(四)

    QTableWidget 前言 QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid.QTableWidget是QTableView的子类,它使用标准的数据模型 ...

  9. PyQt5控件QTableWidget

    1. 文章内容会在以后持续增加 2. 文中涉及的数据,会在文末提供下载链接 1. 简单实例 1.1 最终效果: 1.2 代码 from PyQt5 import QtWidgets import pa ...

最新文章

  1. php网站制作商品结算怎么做,一种以让产品、信息快速同步多网站销售并结算的技术的制作方法...
  2. 安装zookeeper集群及出现的问题
  3. 如何通过Port-isolate实现二层网络相互隔离
  4. .NET开源社区存在的问题
  5. 2020ICPC(小米邀请赛2) - 2020(二分+贪心)
  6. 【转】浮点数之间的比较
  7. java+包装类,装箱和拆箱_Java包装类,装箱和拆箱详解
  8. 与圆相关的计算(信息学奥赛一本通-T1014)
  9. codeforces 261D Maxim and Increasing Subsequence(树状数组优化最长上升子列)
  10. oppo 系列手机刷机教程
  11. Photoshop CS6 破解安装
  12. 金融人必须掌握的词汇
  13. 全国第三次土壤普查实验室筛选开始 实验室要求理化检测指标仪器一览
  14. 鸡先还是蛋先,当然有答案
  15. 学霸 帝国理工 本科 计算机,帝国理工和剑桥计算机的offer,该去哪个?
  16. 四、完成Teigha.net库对CAD看图的放大/缩小/移动实体等界面操作,图层管理器,以及CAD文件布局的切换功能
  17. Vue h5 调用微信扫码接口
  18. JS逆向:猿人学爬虫比赛第九题详细题解
  19. html背景透明图片固定,请问在HTML中如何把一张图片的背景设定为透明的?
  20. iOS打包pod spec

热门文章

  1. 导出excel HSSFWorkbook 只能最多导出65535条数据
  2. 2018年7月30日初步熟悉ubuntu操作系统
  3. CTGU-2023春-MySQL数据库实验3_3-查询789
  4. vb.net的循环语句
  5. AFBP 折旧运行日志查看
  6. 用JDOM创建XML完整实例(包括定义xmlns:xsi和xsi:type)
  7. jq删除某个css样式,jq删除属性_使用jquery删除css属性或样式
  8. Linux配置双网卡--静态路由
  9. python写一个接口_如何用python写接口
  10. DEF、LEF 文件