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

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

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

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

表格

QTableWidget

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

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

PyQt 表格 - 图1

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

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

PyQT 中的表格

该表由变量数据定义。

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

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

  1. from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QAction, QTableWidget,QTableWidgetItem,QVBoxLayout
  2. from PyQt5.QtGui import QIcon
  3. from PyQt5.QtCore import pyqtSlot
  4. import sys
  5. data = {'col1':['1','2','3','4'],
  6. 'col2':['1','2','1','3'],
  7. 'col3':['1','1','2','1']}
  8. class TableView(QTableWidget):
  9. def __init__(self, data, *args):
  10. QTableWidget.__init__(self, *args)
  11. self.data = data
  12. self.setData()
  13. self.resizeColumnsToContents()
  14. self.resizeRowsToContents()
  15. def setData(self):
  16. horHeaders = []
  17. for n, key in enumerate(sorted(self.data.keys())):
  18. horHeaders.append(key)
  19. for m, item in enumerate(self.data[key]):
  20. newitem = QTableWidgetItem(item)
  21. self.setItem(m, n, newitem)
  22. self.setHorizontalHeaderLabels(horHeaders)
  23. def main(args):
  24. app = QApplication(args)
  25. table = TableView(data, 4, 3)
  26. table.show()
  27. sys.exit(app.exec_())
  28. if __name__=="__main__":
  29. main(sys.argv)

下载示例