pyqt 调用ui页面的QTableWidget无法显示内容

 我是再另一个类中调用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)  # 设置当前窗口布局方式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个例子,展示如何在PyQt5中重写QTableWidget,以便将文件拖放到表中并显示它们: ```python from PyQt5.QtWidgets import QTableWidget, QFileDialog from PyQt5.QtCore import Qt, QMimeData from PyQt5.QtGui import QDrag, QPixmap class MyTableWidget(QTableWidget): def __init__(self, parent=None): super().__init__(parent) self.setAcceptDrops(True) # 允许拖放 self.setSelectionMode(QTableWidget.SingleSelection) # 单选 self.setSelectionBehavior(QTableWidget.SelectRows) # 按行选择 self.setColumnCount(2) self.setHorizontalHeaderLabels(['文件名', '路径']) self.setRowCount(0) def dragEnterEvent(self, event): if event.mimeData().hasUrls(): event.acceptProposedAction() def dragMoveEvent(self, event): if event.mimeData().hasUrls(): event.acceptProposedAction() def dropEvent(self, event): if event.mimeData().hasUrls(): event.setDropAction(Qt.CopyAction) event.accept() for url in event.mimeData().urls(): path = url.toLocalFile() filename = path.split('/')[-1] self.insertRow(self.rowCount()) self.setItem(self.rowCount() - 1, 0, QTableWidgetItem(filename)) self.setItem(self.rowCount() - 1, 1, QTableWidgetItem(path)) ``` 在这里,我们创建了一个名为`MyTableWidget`的新类,它继承自`QTableWidget`。我们重写了三个方法:`dragEnterEvent()`、`dragMoveEvent()`和`dropEvent()`。 `dragEnterEvent()`和`dragMoveEvent()`方法用于确定何时可接受拖放操作。在这个例子中,我们只接受文件拖放。如果`mimeData`对象中包含URL,则我们接受拖放并将其`acceptProposedAction()`,否则我们忽略它。 `dropEvent()`方法在拖放操作完成时被调用。我们获取拖动的文件路径,插入新行并在第一列中添加文件名,在第二列中添加文件路径。 现在,我们可以在UI文件中将`QTableWidget`替换为`MyTableWidget`:将`QTableWidget`替换为`MyTableWidget`,然后在`__init__()`方法中添加以下代码: ```python self.tableWidget = MyTableWidget(self) ``` 这样我们就可以使用重写后的`MyTableWidget`将文件拖放到表中并显示它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值