geekdoc-python-zh/docs/pythonbasics/101.md

2.3 KiB

PyQt 表格

原文: https://pythonbasics.org/pyqt-table/

可以使用QTableWidget创建表。 它是基于项目的表视图,类似于您在 Excel 中看到的视图。

您可以将表格窗口小部件作为 gui 的一部分,或弹出带有表格之类的 Excel 的窗口。

在此示例(PyQt5)中,它将显示带有表的窗口,但是您可以通过 Designer 将其作为窗口 GUI 的一部分。

表格

QTableWidget

QTableWidget是具有行和列的表小部件。

该对象具有方法.setRowCount(x).setColumnCount(y),其中x是行数,y是列数。 您可以将其用作self.setRowCount(5)

pyqt table

内容由self.setItem(m, n, newitem)设置,其中mn是表格内的坐标。

变量newitem的类型为QTableWidgetItem,可以将文本值作为字符串。 例如:.setItem(1,2, QTableWidgetItem("Table Cell"))

PyQT 中的表格

该表由变量数据定义。

data = {'col1':['1','2','3','4'],
        'col2':['1','2','1','3'],
        'col3':['1','1','2','1']}

下面的示例创建一个包含 3 列和若干行的表。


from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QAction, QTableWidget,QTableWidgetItem,QVBoxLayout
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
import sys

data = {'col1':['1','2','3','4'],
        'col2':['1','2','1','3'],
        'col3':['1','1','2','1']}

class TableView(QTableWidget):
    def __init__(self, data, *args):
        QTableWidget.__init__(self, *args)
        self.data = data
        self.setData()
        self.resizeColumnsToContents()
        self.resizeRowsToContents()

    def setData(self): 
        horHeaders = []
        for n, key in enumerate(sorted(self.data.keys())):
            horHeaders.append(key)
            for m, item in enumerate(self.data[key]):
                newitem = QTableWidgetItem(item)
                self.setItem(m, n, newitem)
        self.setHorizontalHeaderLabels(horHeaders)

def main(args):
    app = QApplication(args)
    table = TableView(data, 4, 3)
    table.show()
    sys.exit(app.exec_())

if __name__=="__main__":
    main(sys.argv)

下载示例