Вы должны использовать setModelColumn()
метод QComboBox
, чтобы указать столбец, который вы хотите отобразить:
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
Плюс:
Если выЧтобы показать QComboBox с 2 столбцами, вы должны создать собственный QComboBox, как показано ниже:
multicombobox.py
from PyQt5 import QtCore, QtGui, QtWidgets
class CustomView(QtWidgets.QTableView):
def __init__(self, parent=None):
super(CustomView, self).__init__(parent)
self.verticalHeader().hide()
self.horizontalHeader().hide()
self.setShowGrid(False)
self.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
self.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
def adjustWidth(self):
w = sum([self.horizontalHeader().sectionSize(i) for i in range(self.horizontalHeader().count())])
self.setFixedWidth(w)
self.parentWidget().setFixedWidth(w)
def showEvent(self, e):
if self.isVisible():
self.adjustWidth()
super(CustomView, self).showEvent(e)
class MultiComboBox(QtWidgets.QComboBox):
def setModel(self, model):
super(MultiComboBox, self).setModel(model)
view = CustomView(self)
self.setView(view)
def paintEvent(self, e):
painter = QtWidgets.QStylePainter(self)
painter.setPen(self.palette().color(QtGui.QPalette.Text))
opt = QtWidgets.QStyleOptionComboBox()
self.initStyleOption(opt)
if self.model():
p = self.rootModelIndex()
t = ""
for c in range(self.model().columnCount(p)):
t += " " + self.model().index(self.currentIndex(), c).data()
opt.currentText = t
fm = QtGui.QFontMetrics(self.font())
self.setMinimumWidth(fm.width(t))
painter.drawComplexControl(QtWidgets.QStyle.CC_ComboBox, opt)
painter.drawControl(QtWidgets.QStyle.CE_ComboBoxLabel, opt)
И если вы хотите использоватьв Qt Designer вы должны продвигать его, для этого вы можете просмотреть этот ответ .