Ich benutze Python 3.5, und ich habe einen einfachen Code, der eine Tabelle mit einigen Kombinationsfeldern innerhalb davon erstellt. Hier ist der Code:PyQt5: Index der Zellen Widgets und ihre gewählten Werte erhalten
from PyQt5 import QtCore
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
########################## Create table ##############################
tableWidget = QtWidgets.QTableWidget()
tableWidget.setGeometry(QtCore.QRect(200, 200, 250, 300))
tableWidget.setColumnCount(2)
tableWidget.setRowCount(9)
tableWidget.show()
################# Create tablecontent & comboboxes ###################
names = ['Name 1', 'Name 2', 'Name 3', 'Name 4']
i = 0
for j in names:
tableWidget.setItem(i, 0, QtWidgets.QTableWidgetItem(j))
comboBox = QtWidgets.QComboBox()
combo_option_list = ["Choose...", "Option 1", "Option 2", "Option 3", "Option 4"]
for t in combo_option_list:
comboBox.addItem(t)
tableWidget.setCellWidget(i, 1, comboBox)
i += 1
sys.exit(app.exec_())
Ich möchte mit diesen Combo-Boxen arbeiten, aber ich habe mehrere Probleme. Es beginnt schon mit der Tatsache, dass ich nur die zuletzt erstellte Combo-Box mit dem folgenden Befehl verwenden:
comboBox.activated[str].connect(do_something)
Ich brauche die folgenden Dinge wissen:
- Wie osignale für alle Kombinationsboxen?
- Wie erhält man den Index der ausgewählten Combobox?
- Wie erhalten Sie den Index der ausgewählten Combo-Box-Option, nachdem es ausgewählt wurde?
Sie alle Comboboxen auf der Liste behalten können den Zugang zu allen haben - 'combobox_list.append (ComboBox) '. Sie können der ComboBox eigene Variablen zuweisen. 'comboBox.my_index = ich'. BTW: mehr pythonischer Weg 'für i, j in aufzählen (Namen):' – furas
@furas Danke! Das hilft mir ein bisschen. 'combobox_list [n_box] .currentIndexChanged.connect (do_something)' Aber wie bekommt man den Index der combobox_list nachdem er angeklickt wurde? – saitam
In 'do_something()' können Sie das Widget direkt aufrufen - 'widget = event.sender()' und Sie brauchen seinen Index nicht. Jetzt können Sie das tun. 'widget.addItem (" Andere Option ")', 'print (widget.my_index)', oder die ausgewählte Option 'widget.currentText()', usw. Wenn Sie einen Index benötigen und Sie 'comboBox.my_index' nicht erstellt haben dann können Sie Standardlistenfunktionen wie 'combobox_list.index (widget)' oder 'if widget in combobox_list' ausprobieren. – furas