我是再另一个类中调用ui生成py,默认的rowcount为0,发现在该文件中调用后无法改变tablewidget的属性,后来发现是因为多了一行 self.tableWidget_4 = QTableWidget()
可能是重新定义了个对象,如图注释掉后就成功了。
后面是放的完整代码,包含了数据库查询并显示在tablewidget中
from userlogin import *
from PyQt5.QtWidgets import *
from datasql import *
class userlogin(QtWidgets.QMainWindow, Ui_userlogin):
def __init__(self):
super(userlogin, self).__init__()
self.setupUi(self) # 创建窗体对象
self.init()
def init(self):
self.lineEdit_13.setPlaceholderText("输入商品名")
db = pymysql.connect(host='localhost', user='root', password='061522',
db='salesystem', port=3306, charset='utf8mb4', )
cursor = db.cursor()
cursor.execute("select * from goods") # 执行查询语句,选择表中所有数据
result=cursor.fetchall() #获取所有记录
print(result)
row = cursor.rowcount
col = len(result[0])
print(row,col)
cursor.close() # 关闭游标
db.close() # 关闭数据库连接
# 构建QTableWidget对象,设置表格行列
self.tableWidget_4 = QTableWidget()
self.tableWidget_4.setRowCount(row)
self.tableWidget_4.setColumnCount(col)
self.tableWidget_4.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
# 设置最后一列自动填充容器
self.tableWidget_4.horizontalHeader().setStretchLastSection(True)
for i in range(0,row):
self.tableWidget.setItem(i, 0, QTableWidgetItem(str(result[i][0])))
self.tableWidget.setItem(i, 1, QTableWidgetItem(str(result[i][1])))
self.tableWidget.setItem(i, 2, QTableWidgetItem(str(result[i][2])))
self.tableWidget.setItem(i, 3, QTableWidgetItem(str(result[i][3])))
self.tableWidget.setRowHeight(i, 60)
# 将表格变为禁止编辑,默认可编辑!
self.tableWidget_4.setEditTriggers(QAbstractItemView.NoEditTriggers)
# 设置表格为整行选择
self.tableWidget_4.setSelectionBehavior(QAbstractItemView.SelectRows)
# 将行和列的大小设为与内容相匹配
self.tableWidget_4.resizeColumnsToContents()
self.tableWidget_4.resizeRowsToContents()
# 表格颜色交错显示
self.tableWidget_4.setAlternatingRowColors(True)
# 表格表头的显示与隐藏
# tableWidget.verticalHeader().setVisible(False)
# tableWidget.horizontalHeader().setVisible(False)
# 不显示表格单元格的分割线
# tableWidget.setShowGrid(False)
# 显示垂直表头
self.tableWidget_4.verticalHeader().setVisible(True)
# conLayout.addWidget(tableWidget) # 将表格添加到水平布局中
#
# self.setLayout(conLayout) # 设置当前窗口布局方式