接下来我会为你详细讲解Python的PyQt5模块中的QTableWidget控件的完整使用攻略。
简介
QTableWidget是PyQt5中的一个常用控件,它可以用于显示数据表格,支持多行多列数据的展示。与QTableView相比,QTableWidget更加简单易用,不需要额外的代理模型,支持直接插入数据。
基本用法
创建QTableWidget
import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
# 创建应用对象
app = QApplication(sys.argv)
# 创建QTableWidget对象
table = QTableWidget()
# 显示窗口
table.show()
# 执行应用
sys.exit(app.exec_())
以上示例中,我们首先导入了QApplication
、QTableWidget
及QTableWidgetItem
模块,并创建了一个应用对象app
和一个表格对象table
。我们在创建表格对象时并没有指定维度和大小,这是在后面设置的。随后,通过show()
方法显示窗口,并通过app.exec_()
方法开启应用运行。
设置表格的行数、列数和大小
import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
# 创建应用对象
app = QApplication(sys.argv)
# 创建QTableWidget对象
table = QTableWidget()
# 设置表格的行数、列数和大小
table.setColumnCount(3)
table.setRowCount(2)
table.setFixedSize(300, 200)
# 显示窗口
table.show()
# 执行应用
sys.exit(app.exec_())
在以上示例中,我们在创建表格对象table
后,使用setColumnCount
和setRowCount
可以分别设置表格的列数和行数。接下来,通过setFixedSize
方法设置表格的大小为300*200。在设置完相关属性后,将表格通过show()
方法显示在窗口中。
向表格中添加数据
import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
# 创建应用对象
app = QApplication(sys.argv)
# 创建QTableWidget对象
table = QTableWidget()
# 设置表格的行数、列数和大小
table.setColumnCount(3)
table.setRowCount(2)
table.setFixedSize(300, 200)
# 向表格中添加数据
table.setItem(0, 0, QTableWidgetItem('1'))
table.setItem(0, 1, QTableWidgetItem('2'))
table.setItem(0, 2, QTableWidgetItem('3'))
table.setItem(1, 0, QTableWidgetItem('4'))
table.setItem(1, 1, QTableWidgetItem('5'))
table.setItem(1, 2, QTableWidgetItem('6'))
# 显示窗口
table.show()
# 执行应用
sys.exit(app.exec_())
以上示例中,我们在设置完表格的行数、列数和大小后,通过setItem
方法向表格中逐一添加数据。其中setItem(row, column, item)
第一个参数为表格的行数,第二个参数为表格的列数,第三个参数为添加到表格中的数据项,这个数据项可以是普通文本或是其他控件。
获取表格中的数据
import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
# 创建应用对象
app = QApplication(sys.argv)
# 创建QTableWidget对象
table = QTableWidget()
# 设置表格的行数、列数和大小
table.setColumnCount(3)
table.setRowCount(2)
table.setFixedSize(300, 200)
# 向表格中添加数据
table.setItem(0, 0, QTableWidgetItem('1'))
table.setItem(0, 1, QTableWidgetItem('2'))
table.setItem(0, 2, QTableWidgetItem('3'))
table.setItem(1, 0, QTableWidgetItem('4'))
table.setItem(1, 1, QTableWidgetItem('5'))
table.setItem(1, 2, QTableWidgetItem('6'))
# 获取表格中的数据并打印输出
for row in range(table.rowCount()):
for column in range(table.columnCount()):
item = table.item(row, column)
print(item.text())
# 显示窗口
table.show()
# 执行应用
sys.exit(app.exec_())
在以上示例中,我们在向表格中逐一添加数据之后,使用item
方法获取表格中的数据,通过text()
方法获取数据项中的内容,并将其打印输出。
示例一:使用QTableWidget展示数据库中的数据
接下来我们通过一个示例来具体展示如何使用QTableWidget展示数据库中的数据。
import sys
import pymysql
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
class TableWidget(QTableWidget):
def __init__(self, data):
super().__init__()
self.data = data
self.initUI()
def initUI(self):
self.setColumnCount(3)
self.setHorizontalHeaderLabels(['编号', '姓名', '年龄'])
rows_count = len(self.data)
self.setRowCount(rows_count)
for i in range(rows_count):
for j in range(3):
item = QTableWidgetItem(str(self.data[i][j]))
self.setItem(i, j, item)
def get_data():
conn = pymysql.connect(host='127.0.0.1', user='root', password='密码', database='test')
cursor = conn.cursor()
cursor.execute('select * from person')
data = cursor.fetchall()
cursor.close()
conn.close()
return data
if __name__=="__main__":
app = QApplication(sys.argv)
data = get_data()
table = TableWidget(data)
table.show()
sys.exit(app.exec_())
在以上示例中,我们首先定义了一个名为TableWidget的类,继承自QTableWidget。TableWidget类中包含了一个data列表作为数据输入。在initUI()方法中,我们先设置了表格的列数和列名,接着根据数据列表设置了表格的行数和具体内容。在get_data()方法中,我们连接创建了mysql数据库,并查询了person表中的数据,最后关闭了数据库的连接。最后在应用中,我们传入相关数据并生成TableWidget对象,将其显示在窗口中。
示例二:支持表格的编辑
接下来我们通过一个示例具体展示如何在QTableWidget中支持表格的编辑。
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow,QTableWidget,QTableWidgetItem
from PyQt5.QtCore import Qt
class TableWidget(QTableWidget):
def __init__(self, parent=None):
super(TableWidget, self).__init__(parent)
self.initUI()
def initUI(self):
self.setColumnCount(3)
self.setHorizontalHeaderLabels(['编号', '姓名', '年龄'])
# 启用编辑模式
self.setEditTriggers(QTableWidget.DoubleClicked)
# 设置选中时为整行选中
self.setSelectionBehavior(QTableWidget.SelectRows)
# 添加行
row = self.rowCount()
self.insertRow(row)
# 设置行数据
self.setItem(row,0,QTableWidgetItem("1"))
self.setItem(row,1,QTableWidgetItem("小明"))
self.setItem(row,2,QTableWidgetItem("18"))
if __name__ == '__main__':
app = QApplication(sys.argv)
table = TableWidget()
table.show()
sys.exit(app.exec_())
在以上示例中,我们在设置完表格的列名后先启用了表格的双击编辑模式,设置行选中为整行选中,并通过insertRow
方法添加了一个新的行,随后通过setItem
方法为新行设置了相关数据,并将其显示在表格中。在启用了编辑模式后,用户可以通过双击表格中的单元格,修改表格中的值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – QTableWidget - Python技术站