PyQt5中的QTablewidget

这篇具有很好参考价值的文章主要介绍了PyQt5中的QTablewidget。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境 PyQt5 + VSCode

Qt Designer生成界面

在VSCode的资源管理器中,右键选择 PYQT:New Form,打开Qt Designer
PyQt5中的QTablewidget,PyQt5,qt,开发语言,python,pyqt
选择新建Dialog without Buttons,点击 创建
PyQt5中的QTablewidget,PyQt5,qt,开发语言,python,pyqt
在左侧的Item Widgets中将 Table Widget拖入Dialog窗体中。
PyQt5中的QTablewidget,PyQt5,qt,开发语言,python,pyqt
得到界面
PyQt5中的QTablewidget,PyQt5,qt,开发语言,python,pyqt
将文件保存为tablewidget1.ui。
在VSCode中,右键点击文件tablewidget1.ui, 选Compile From,
PyQt5中的QTablewidget,PyQt5,qt,开发语言,python,pyqt

得到Ui_tablewidget1.py文件。
PyQt5中的QTablewidget,PyQt5,qt,开发语言,python,pyqt

运行

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

from Ui_tablewidget import Ui_Dialog
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QTableWidgetItem, 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)#设置第0列的宽度
        self.tableWidget.setColumnWidth(1,100)#设置第1列的宽度
        self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)#选中整行模式

        self.tableWidget.setHorizontalHeaderLabels(['姓名','班别']) #水平标题
        names = ['小天','小米','小云','小月','小芳','小贝','小美','小亮','小欢','小阳']
        classes = ['一班','一班','一班','二班','二班','二班','二班','三班','三班','三班']
        
        i = 0
        for item in names:
            self.tableWidget.setItem(i,0, QTableWidgetItem(item))#添加内容到表格中
            self.tableWidget.setItem(i,1, QTableWidgetItem(classes[i]))#添加内容到表格中
            i += 1

        self.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运行,得到
PyQt5中的QTablewidget,PyQt5,qt,开发语言,python,pyqt

点击单元格时,控制台会显示当前行的第一列内容
PyQt5中的QTablewidget,PyQt5,qt,开发语言,python,pyqt
方法

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 = 0
        for item in names:
            self.tableWidget.setItem(i,0, QTableWidgetItem(item))
            self.tableWidget.setItem(i,1, QTableWidgetItem(classes[i]))
            i += 1

        self.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运行,拖动滚动条时,控制台显示滚动条的位置文章来源地址https://www.toymoban.com/news/detail-859735.html

到了这里,关于PyQt5中的QTablewidget的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python进阶-PyQt5】00搭建PyQt5环境

    我们编写的程序,有时用到的Python库是不一样的,比如说开发桌面应用程序我们主要用到PyQt5相关的Python库、开发Web应用程序我们主要用到Django相关的Python库等等。假设我们在开发桌面应用程序的时候除了PyQt5相关的Python库外,还附加了其他的Python库,比如有关Django的Python库。

    2024年02月08日
    浏览(41)
  • [pyqt5]关于在pyqt5界面上鼠标位置问题

    先上代码,主要看鼠标移动事件里面代码 通过运行代码可以发现: 上面这2行就是相当于屏幕左上角坐标了

    2024年02月15日
    浏览(39)
  • PyQt5入门(一)——PyQt5与QtDesigner的安装

    首先,需要确保你已经安装了Python和PIP,因为使用PIP来安装PyQt5是最简便的方法。以下是在Windows和Ubuntu环境下配置并安装PyQt5以及QtDesigner的步骤: 打开命令提示符(CMD)。 运行以下命令安装PyQt5:pip install pyqt5 安装完成后,在命令提示符中运行“python”命令,然后输入“im

    2024年02月02日
    浏览(48)
  • PyQt5入门1——PyQt5的安装与Hello World应用

    搞搞可视化界面哈,虽然不一定有用,但是搞一下。 PyQt实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。 PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL的版

    2024年02月12日
    浏览(58)
  • python GUI工具之PyQt5模块,pyCharm 配置PyQt5可视化窗口

    https://doc.qt.io/qt-5/qtwidgets-module.html https://doc.qt.io/qt-5/qt.html#AlignmentFlag-enum 一、简介 PyQt是Qt框架的Python语言实现,由Riverbank Computing开发,是最强大的GUI库之一。PyQt提供了一个设计良好的窗口控件集合,每一个PyQt控件都对应一个Qt控件。 PyQt5是由一系列Python模块组成,有超过6

    2024年02月11日
    浏览(50)
  • PyQT5和PyQt6的区别

    PyQt6和PyQt5是两个版本的PyQt框架,具有以下区别: 1.PyQt6是PyQt的最新版本,而PyQt5是较旧的版本。PyQt6提供了更多的功能和改进,以提供更好的用户体验和开发体验。 2.PyQt6支持Python 3.10及更高版本,而PyQt5支持Python 3.5到3.9版本。 3.PyQt6对底层Qt库的版本要求更高,支持Qt 6及更高

    2024年02月07日
    浏览(43)
  • PyQt6 和 PyQt5 的差异

    PyQt6 是 PyQt5 的下一个版本,但两个版本的写法基本上其实大同小异,这篇教学会介绍 PyQt6 和 PyQt5 有何差异。 快速预览: .exec_() 改为 .exec() 方法的位置或名称改变 不需要高 DPI 缩放属性 支援 Qt的资源 特定平台 其他细节差异 PyQt6 教学 - PyQt6 和 PyQt5 的差异 在 Python 2.7

    2024年02月15日
    浏览(40)
  • [Python GUI PyQt] PyQt5快速入门

    本文为博主个人对自己学习 PyQt5 GUI技术的纲要式的总结,主要的目的是以比较宏观的视角再次对 PyQt5 这一项技术作一次总结,通过该文可以快速让读者建立起 PyQt5 最基本的知识体系,了解 PyQt5 的 基本界面的设计 、 信号与槽 和 多线程 等知识,并简单学会使用 Qt Designer 工

    2024年04月15日
    浏览(52)
  • 安装Pyqt5报错:ERROR: Failed building wheel for PyQt5-sip

    今天尝试安装Pyqt5出现如下报错。 根据提示安装下列模块问题依旧 最后定位到这个提示:需要用到 Microsoft C++ Build Tools 用powershell 从微软下载C++生成工具并启动 安装如下选项 c++/cli 一定要选。 再次安装 pyqt5安装成功。

    2024年02月15日
    浏览(42)
  • mac python3.9安装pyqt5、qt5、pyqt5-tools

    pyqt6安装参考 PyQT6:看这一篇就够了 python PyQt6 常用操作以及常见问题解决 pycharm配置tools 参考链接 以下pip命令自行更具自己环境选择pip或pip3 在安装pyqt前必须先安装sip包 完成sip的安装后,安装pyqt和pyqt-tools, 可以直接使用命令: 若是使用pip3安装报错 AttributeError: module ‘sipb

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包