Форум сайта python.su
rom PyQt4 import QtGui class window(QtGui.QWidget): def __init__(sf): QtGui.QWidget.__init__(sf) sf.setWindowTitle("Прикрепление источника данных к комбобоксу") sf.resize(400, 400) sf.layout = QtGui.QVBoxLayout() sf.setLayout(sf.layout) sf.model = QtGui.QStandardItemModel(5, 2) sf.fillmodel() sf.combo = QtGui.QComboBox() sf.combo.setModel(sf.model) sf.combo.setModelColumn(1) sf.layout.addWidget(sf.combo) sf.view2 = QtGui.QTableView() sf.view2.setModel(sf.model) sf.layout.addWidget(sf.view2) sf.combo2 = QtGui.QComboBox() sf.combo2.setView(sf.view2) sf.layout.addWidget(sf.combo2) sf.layout.addStretch() def fillmodel(sf): mass = [[1, "Один"], [2, "Два"], [3, "Три"], [4, "Четыре"], [5, "Пять"]] sf.model.setHorizontalHeaderItem(0, QtGui.QStandardItem("Номер")) sf.model.setHorizontalHeaderItem(1, QtGui.QStandardItem("Описание")) for number, string in mass: sf.model.setItem(number-1, 0, QtGui.QStandardItem(str(number))) sf.model.setItem(number-1, 1, QtGui.QStandardItem(string)) for i in range(sf.model.rowCount()): print (sf.model.item(i, 0).text(), sf.model.item(i, 1).text()) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) win = window() win.show() sys.exit(app.exec_())
Офлайн
К sf не придираться! Мне религия не позволяет писать self!
Офлайн
Скажите, почему view2 вообще не показывается на форме как отдельный виджет? Что не так?
Офлайн
sf.combo2 = QtGui.QComboBox() # sf.combo2.setView(sf.view2) sf.layout.addWidget(sf.view2) sf.layout.addWidget(sf.combo2)
Офлайн
> Почему combo2 не желает показывать модель?
Наверно потому что у него нет модели. Она только у sf.combo. Так заработает:
sf.combo2.setModel(sf.model)
Отредактировано Rodegast (Сен. 18, 2014 20:23:20)
Офлайн
Я уж сам разобрался почему представление не показывалось на форме. Модель может использоваться и одна, а вот представления для разных объектов должны создаваться для каждого свой экземпляр.
Но, таки, combobox не умеет работать с представлением (view)? Зачем же у него есть метод setView?
RodegastСлава sf!
На костёр!
Офлайн
Ты только про костёр прочитал?
Офлайн