На форме разместил виджет QTableWidget. В него передаю содержимое загружаемого csv-файла. Соответственно, все содержимое выводится в виде таблицы. Здесь проблем нет.
Под QTableWidget находятся два ComboBox. В одном из них выбирается значения для отображения на оси X, в другом для оси Y. Для дальнейшего построения графика по значениям таблицы.
Каждый ComboBox должен отображать список из заголовков столбцов таблицы, которая выводится в QTableWidget.
Как передать этот список? Использовал конструкцию вида
spisok = self.itemFromIndex()
self.ComboBox1.addItem(spisok)
Не выходит.
Этот момент интересует в первую очередь.
А дальше надо в зависимости от выбранного индекса (названия) столбца, передать в переменные значения этих столбцов для указанного построения графика.
Желательно, чтобы во втором ComboBox скрывалось то значение, которое выбрано в первом ComboBox. Если в первом комбо выбирается другое значение, то соответственно, из второго скрывается уже оно. А предыдущее появляется.
Это для того, чтобы не был выбран один и тот же столбец для обеих осей.
Либо ничего не скрывать, но выводить предупреждающее сообщение.
Как реализовать такую функцию?
Заранее спасибо ))
Вот код для виджета QTableWidget
class MyTable(QtWidgets.QTableWidget): def __init__(self, r, c): super().__init__(r, c) self.check_change = True self.init_ui() def init_ui(self): self.cellChanged.connect(self.c_current) #self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) # Запрет редактирования таблицы self.show() def c_current(self): if self.check_change: row = self.currentRow() col = self.currentColumn() value = self.item(row, col) value = value.text() def open_sheet(self): self.check_change = False path = QtWidgets.QFileDialog.getOpenFileName(self, 'Open CSV', os.getenv('HOME'), 'CSV(*.csv)') if path[0] != '': with open(path[0], newline='', encoding="utf-8") as csv_file: self.setRowCount(0) self.setColumnCount(2) my_file = csv.reader(csv_file, delimiter=',', quotechar='|') for row_data in my_file: row = self.rowCount() self.insertRow(row) if len(row_data) > 2: self.setColumnCount(len(row_data)) for column, stuff in enumerate(row_data): item = QtWidgets.QTableWidgetItem(stuff) self.setItem(row, column, item) self.selectRow(0) self.check_change = True
А на форме я его вывожу с помощью строки
self.tableWidget = MyTable(10, 2)