PyQt5中的QTablewidget

2024-04-27 04:52
文章标签 pyqt5 qtablewidget

本文主要是介绍PyQt5中的QTablewidget,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境 PyQt5 + VSCode

Qt Designer生成界面

在VSCode的资源管理器中,右键选择 PYQT:New Form,打开Qt Designer
在这里插入图片描述
选择新建Dialog without Buttons,点击 创建
在这里插入图片描述
在左侧的Item Widgets中将 Table Widget拖入Dialog窗体中。
在这里插入图片描述
得到界面
在这里插入图片描述
将文件保存为tablewidget1.ui。
在VSCode中,右键点击文件tablewidget1.ui, 选Compile From,
在这里插入图片描述

得到Ui_tablewidget1.py文件。
在这里插入图片描述

运行

新建tablewidget1.py文件。
tablewidget1.py 内容如下

from Ui_tablewidget import Ui_Dialog
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QTableWidgetItem, QAbstractItemViewclass MyDialog(QtWidgets.QDialog,  Ui_Dialog):def __init__(self,  parent=None): super().__init__(parent)self.setupUi(self)self.setWindowTitle("表格")self.tableWidget.setRowCount(10)#设置表格的行数self.tableWidget.setColumnCount(2)#设置表格的列数self.tableWidget.setColumnWidth(0,80)#设置第0列的宽度self.tableWidget.setColumnWidth(1,100)#设置第1列的宽度self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)#选中整行模式self.tableWidget.setHorizontalHeaderLabels(['姓名','班别']) #水平标题names = ['小天','小米','小云','小月','小芳','小贝','小美','小亮','小欢','小阳']classes = ['一班','一班','一班','二班','二班','二班','二班','三班','三班','三班']i = 0for item in names:self.tableWidget.setItem(i,0, QTableWidgetItem(item))#添加内容到表格中self.tableWidget.setItem(i,1, QTableWidgetItem(classes[i]))#添加内容到表格中i += 1self.tableWidget.cellClicked.connect(self.tw_cell_clicked)#单击时触发def tw_cell_clicked(self):row = self.tableWidget.currentRow()#获取当前选中的行column = self.tableWidget.currentColumn()#获取挡墙选中的列t = self.tableWidget.item(row,0).text()#获取指定行、第0列的内容print(t)if __name__=="__main__":app = QApplication([])dialog = MyDialog()dialog.exec_()

按F5运行,得到
在这里插入图片描述

点击单元格时,控制台会显示当前行的第一列内容
在这里插入图片描述
方法

tableWidget.setRowCount(row_num)#设置表格的行数 
tableWidget.setColumnCount(col_num)#设置表格的列数 tableWidget.resizeColumnsToContents()#根据列内容设置列宽 
tableWidget.resizeRowsToContents()#根据行内容设置行高 
tableWidget.setColumnWidth(int column,int width)#设置某列的宽度 
tableWidget.setRowHeight(int row,int height)#设置某行的行高tableWidget.setHorizontalHeaderLabels(['姓名','邮件','电话'])#水平表头
tableWidget.setVerticalHeaderLabels(['一','二','三'])#垂直表头tableWidget.columnCount()#获取当前表格列数 
tableWidget.rowCount()#获取当前表格行数from PyQt5.QtWidgets import QTableWidgetItem 
tableWidget.setItem(0,0, QTableWidgetItem("小天"))#添加元素到0行0列tableWidget.item(row,col).text() #获取某行,列中的内容tableWidget.currentColumn()#获取当前选中的列 ,未选中时显示-1
tableWidget.currentRow()#获取当前选中的行,未选中时显示-1# 设置选中 
selectedItem = tableWidget.item(0, 0)#获取0行0列的元素
tableWidget.setCurrentItem(selectedItem)#设置选中0行0列from PyQt5.QtWidgets import QAbstractItemView 
tableWidget.setSelectionBehavior(QAbstractItemView.SelectColumns)#设置为选择整列 
tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)#设置选择整行 
tableWidget.setSelectionBehavior(QAbstractItemView.SelectItems)#设置选择单个单元格#设置为item不可被编辑
from PyQt5.QtCore import Qt
item = QTableWidgetItem("123") 
item.setFlags(item.flags() & ~Qt.ItemIsEditable) #Qt.ItemIsEditable可编辑 ~Qt.ItemIsEditable不可编辑
tableWidget.setItem(0,0, item ) #item放入0行0列

信号

信号内容
cellClicked单击时
cellDoubleClicked双击时
itemChanged项目发生改变时

滚动条

方法

方法内容
vertical_scrollbar = table_widget.verticalScrollBar()获取垂直滚动条
horizontal_scrollbar = table_widget.horizontalScrollBar()获取水平滚动条
vertical_position = vertical_scrollbar.value()获取垂直滚动条的位置
horizontal_position = horizontal_scrollbar.value()获取水平滚动条的位置
vertical_scrollbar.setValue(vertical_position)设置垂直滚动条的位置
horizontal_scrollbar.setValue(horizontal_position)设置水平滚动条的位置

对于垂直滚动条,位置是最上方显示的行的行数(行数从0开始);对于水平滚动条,位置是最左边显示的列的列数(列数从0开始)

滚动条的信号

信号内容
valueChanged当位置改变时
from Ui_tablewidget import Ui_Dialog
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QTableWidgetItem
from PyQt5.QtWidgets import QAbstractItemView
class MyDialog(QtWidgets.QDialog,  Ui_Dialog):def __init__(self,  parent=None):super().__init__(parent)self.setupUi(self)self.setWindowTitle("表格")self.tableWidget.setRowCount(10)self.tableWidget.setColumnCount(2)self.tableWidget.setColumnWidth(0,80)self.tableWidget.setColumnWidth(1,100)self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)self.tableWidget.setHorizontalHeaderLabels(['姓名','班别'])names = ['小天','小米','小云','小月','小芳','小贝','小美','小亮','小欢','小阳']classes = ['一班','一班','一班','二班','二班','二班','二班','三班','三班','三班']i = 0for item in names:self.tableWidget.setItem(i,0, QTableWidgetItem(item))self.tableWidget.setItem(i,1, QTableWidgetItem(classes[i]))i += 1self.vertical_scrollbar = self.tableWidget.verticalScrollBar()#获取垂直的滚动条self.vertical_scrollbar.valueChanged.connect(self.on_vertical_scrollbar_changed)#滚动条的值改变时触发def on_vertical_scrollbar_changed(self):value = self.vertical_scrollbar.value()#获取滚动条的值print(value)if __name__=="__main__":app = QApplication([])dialog = MyDialog()dialog.exec_()

按F5运行,拖动滚动条时,控制台显示滚动条的位置

这篇关于PyQt5中的QTablewidget的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939563

相关文章

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

【Python篇】PyQt5 超详细教程——由入门到精通(终篇)

文章目录 PyQt5超详细教程前言第9部分:菜单栏、工具栏与状态栏9.1 什么是菜单栏、工具栏和状态栏9.2 创建一个简单的菜单栏示例 1:创建带有菜单栏的应用程序代码详解: 9.3 创建工具栏示例 2:创建带有工具栏的应用程序代码详解: 9.4 创建状态栏示例 3:创建带有状态栏的应用程序代码详解: 9.5 菜单栏、工具栏与状态栏的结合示例 4:完整的应用程序界面代码详解: 9.6 总结

【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)

文章目录 PyQt5超详细教程前言第7部分:生成图表与数据可视化7.1 matplotlib 与 PyQt5 的结合7.2 在 PyQt5 中嵌入 matplotlib 图表示例 1:嵌入简单的 matplotlib 图表代码详解: 7.3 动态生成图表示例 2:动态更新图表代码详解: 7.4 在应用程序中展示不同类型的图表示例 3:展示不同类型的图表代码详解: 7.5 总结 第8部分:对话

【Python篇】PyQt5 超详细教程——由入门到精通(序篇)

文章目录 PyQt5 超详细入门级教程前言序篇:1-3部分:PyQt5基础与常用控件第1部分:初识 PyQt5 和安装1.1 什么是 PyQt5?1.2 在 PyCharm 中安装 PyQt51.3 在 PyCharm 中编写第一个 PyQt5 应用程序1.4 代码详细解释1.5 在 PyCharm 中运行程序1.6 常见问题排查1.7 总结 第2部分:创建 PyQt5 应用程序与布局管理2

【YOLO 系列】基于YOLOV8的智能花卉分类检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言: 花朵作为自然界中的重要组成部分,不仅在生态学上具有重要意义,也在园艺、农业以及艺术领域中占有一席之地。随着图像识别技术的发展,自动化的花朵分类对于植物研究、生物多样性保护以及园艺爱好者来说变得越发重要。为了提高花朵分类的效率和准确性,我们启动了基于YOLO V8的花朵分类智能识别系统项目。该项目利用深度学习技术,通过分析花朵图像,自动识别并分类不同种类的花朵,为用户提供一个高效的花朵识别

通过VSCODE搭建PyQt5 来实现GUI界面

1、首先安装好了vscpde并配置了python环境,如果还没有配置,请先配置完成后再来安装。 2、通过pip(配置python环境时会安装pip)的方式来安装pyqt5及pyqt5-tools pip install PyQt5     pip install PyQt5-Tools 3、找到PyQt5工具的designer.exe运行,一般安装在"C:\Users\XXXX\A

pyinstaller 打包 pyqt5 Could not find QtWebEngineProcess.exe

问题 使用 pyinstaller 打包 pyqt5 应用的时候本来运行正常,但在中文路径下不能运行。 然后,升级 pyinstaller 和 pyqt5 到最新版本,再次打包,结果英文路径也不行了,爆出 Could not find QtWebEngineProcess.exe 之后自动退出。 解决方法 很简单,只需要两步: 找到应用程序打包输出的文件夹,复制输出文件夹下的 PyQt5

QTableWidget详解 Qt

TQTableWidget是一个自定义M*N的表格式widget M表示行数 N表示列数 自带一个行表头 和 一个列表头 表格内有M*N个Item,并非每一行是一个item。item可以内嵌入其他QObject组件。 设置列数 函数 ui->DtableWidget->setColumnCount(COLS);ui->DtableWidget->setRowCount(ROWS);

Pyqt5高级技巧2:Tab顺序、伙伴快捷键、各类常用控件的事件(含基础Demo)

一、编辑Tab顺序         点击下面这个按钮后,按控件调整tab的顺序,设置好后,鼠标聚焦在输入框1中,按一下tab鼠标聚焦会跳到下一个输入框中         编辑tab结束后,按下面这个按钮重新返回页面布局   二、编辑伙伴  (删除伙伴的方法:框选-右键选择全部-删除) 三、设置快捷键(仅MainWindow可用)         例如我菜单(MainWind

【PyQt5 应用程序】PyQt基础组件:树形视图

在探索Python和PyQt制作应用程序的旅程中,树形视图是一个非常强大且常用的组件,尤其是在需要显示层次化数据时。 本节将详细介绍PyQt中树形视图(QTreeView)的使用方法,从基本概念到参数应用举例,希望能帮助你更好地掌握这一组件。 文章目录 树形视图基础自定义项和层次示例应用:任务管理器总结 树形视图基础 树形视图是一种用于展示层次结构数据的图形界面组件,允许用户