如何在Python中为comboBox选择合适的列

时间:2018-10-22 17:11:00

标签: python pyqt pyqt5

我有一个数据库('texpalsac'),Qtdesigner(ventas.ui)和一个表(产品):

 PRODUCTS 
COD   NAME
111   bag
112   shoes
121   pants
122   t-shirts

我希望comboBox(comboArt)显示第二列(“ NAME”),但我不知道该怎么做。现在仅出现第一列(“ COD”:111,112 ...)。 谢谢

class MiFormulario(QDialog, QComboBox):
    def __init__(self, parent=None):
        super(MiFormulario, self).__init__(parent)
        uic.loadUi('Venta.ui', self)

        self.model = QtSql.QSqlTableModel (self)
        self.model.setTable ("products")
        self.model.select ()
        self.comboArt.setModel (self.model)

1 个答案:

答案 0 :(得分:0)

您必须使用setModelColumn()的{​​{1}}方法来指示要显示的列:

QComboBox

加号:

如果要显示包含2列的QComboBox,则必须创建一个自定义QComboBox,如下所示:

multicombobox.py

class MiFormulario(QDialog): # <-- remove QComboBox, it is unnecessary
    def __init__(self, parent=None):
        super(MiFormulario, self).__init__(parent)
        uic.loadUi('Venta.ui', self)

        self.model = QtSql.QSqlTableModel(self)
        self.model.setTable("products")
        self.model.select()
        self.comboArt.setModel(self.model)
        self.comboArt.setModelColumn(1) # <--- select column 1

如果要在Qt Designer中使用它,则必须对其进行升级,为此,您可以查看this answer