gpt4 book ai didi

python - 如何在 PyQt 中动态创建列和行?

转载 作者:行者123 更新时间:2023-12-04 15:20:07 27 4
gpt4 key购买 nike

我正在 Windows 7 中使用 python3、PyQt5 制作 GUI 桌面应用程序。

我想要做的是:

  • 当我的应用程序运行时,它使用 QTableWidget 创建一个空表。还有四个按钮。
  • 当用户单击第一个按钮时,空表有 2 行 4 列。
  • 在这种情况下,如果用户单击另一个按钮,则先前的列和行将被删除,表格将获得 10 列和 20 行。

  • 我做了一张空 table ,但是 我不知道如何动态创建列和行。

    这是我的代码:
    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTableWidget, QPushButton

    class mainClass(QMainWindow):
    def __init__(self):
    super().__init__()
    self.initUI()

    def initUI(self):
    self.tableWidget = tableManager()
    self.returnedTableWidget = self.tableWidget.makeTable(self)

    btnMaker = buttonManager()
    btnMaker.makeTestBtn(self)

    self.setGeometry(100, 100, 700, 600)
    self.show()


    class buttonManager(QWidget):
    def __init__(self):
    super().__init__()

    def makeTestBtn(self, parent):
    testBtn01 = QPushButton("2 X 4", parent)
    testBtn02 = QPushButton("4 X 8", parent)
    testBtn03 = QPushButton("8 X 16", parent)
    testBtn04 = QPushButton("16 X 32", parent)

    testBtn01.move(50, 450)
    testBtn02.move(200, 450)
    testBtn03.move(350, 450)
    testBtn04.move(500, 450)


    class tableManager(QWidget):
    def __init__(self):
    super().__init__()

    def makeTable(self, parent):
    self.tableMaker = QTableWidget(parent)
    self.tableMaker.setGeometry(50, 50, 600, 400)

    return self.tableMaker


    if __name__ == '__main__':
    app = QApplication(sys.argv)
    mc = mainClass()
    sys.exit(app.exec_())

    我知道有 setRowCount()setColumnCount() QTableWidget 中的方法类(class)。但我不知道在我的代码中如何以及在何处使用这些方法。

    最佳答案

    创建行和列:
    1 - 从数据库中获取所有数据
    2 - 用于语句如下:

    all_data = db.fetch
    tbl = QtGui.QTableWidget(len(all_data),X) # X is The number of columns that you need
    header_labels = ['Column 1', 'Column 2', 'Column 3', 'Column 4',...]
    tbl.setHorizontalHeaderLabels(header_labels)
    for row in all_data:
    inx = all_data.index(row)
    tbl.insertRow(inx)
    tbl.setItem(inx,Y,QTableWidgetItem(your data)) # Y is the column that you want to insert data

    例如:
    all_data = [[1,2,3,4],[5,6,7,8]]
    tbl = QtGui.QTableWidget(len(all_data),4)
    header_labels = ['Column 1', 'Column 2', 'Column 3', 'Column 4']
    tbl.setHorizontalHeaderLabels(header_labels)
    for row in all_data:
    inx = all_data.index(row)
    tbl.insertRow(inx)
    tbl.setItem(inx,0,QTableWidgetItem(str(row[0])))
    tbl.setItem(inx,0,QTableWidgetItem(str(row[0])))
    tbl.setItem(inx,0,QTableWidgetItem(str(row[0])))

    我希望它有用
    当然,如果我没有理解你的问题,我很抱歉

    关于python - 如何在 PyQt 中动态创建列和行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34258650/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com