环境 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, 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运行,得到
点击单元格时,控制台会显示当前行的第一列内容
方法
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开始)
滚动条的信号文章来源:https://www.toymoban.com/news/detail-859735.html
信号 | 内容 |
---|---|
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模板网!