首页 > 解决方案 > 如何防止为 TableWidget 第一行上创建的每个 ComboBox 编写额外的代码行?

问题描述

我想在 TableWidget 的第一行创建一个 ComboBox。我的代码到目前为止有效,但问题是我必须为每个单元格的每个 ComboBox 编写另一行。我使用这些组合框对每一列进行分类,以从这些列中检索数据以进行计算。有没有办法缩短代码?提前谢谢了。

我的代码

from PyQt5 import QtCore, QtGui, QtWidgets

class ComboBoxCategory(QtWidgets.QComboBox):
    def __init__(self, parent):
        super().__init__(parent)
        self.setStyleSheet("font-size: 13px")
        self.addItems(["","Customer-ID", "Customer Name", "Revenue", "Year", "Revenue Type"])

class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        MainWindow.resize(1700, 800)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        #****************   Table Widget  **********************#
        self.TableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.TableWidget.setRowCount(500)
        self.TableWidget.setColumnCount(26)
        self.TableWidget.setHorizontalHeaderLabels(list("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
        self.TableWidget.setColumnWidth(0, 200)
        self.TableWidget.horizontalHeader().resizeSections()
        self.TableWidget.setGeometry(QtCore.QRect(40, 200, 1625, 500))
        # # # ************   Table ComboBox first row  ****************#
        self.combo0 = ComboBoxCategory(self.TableWidget)
        self.TableWidget.setCellWidget(0, 0, self.combo0)
        self.combo1 = ComboBoxCategory(self.TableWidget)
        self.TableWidget.setCellWidget(0, 1, self.combo1)
        self.combo2 = ComboBoxCategory(self.TableWidget)
        self.TableWidget.setCellWidget(0, 2, self.combo2)

编辑:解决

  def Combobox(self):
        for column in range(2):
            combo_cell = "combo" + "0"
            self.combo_cell = ComboBoxCategory(self.TableWidget)
            self.TableWidget.setCellWidget(0, column, self.combo_cell)

标签: pythonpyqt5qtablewidgetqcombobox

解决方案


推荐阅读