[Eric] Fwd: Re: PyQt-Slot for QtWidget (QComboBox) created during runtime
GM
mossl at gmx.net
Mon Sep 24 09:34:35 BST 2018
-------- Weitergeleitete Nachricht --------
Betreff: Re: [Eric] PyQt-Slot for QtWidget (QComboBox) created during
runtime
Datum: Sun, 23 Sep 2018 23:30:33 +0200
Von: GM <mossl at gmx.net>
An: Christos Sevastiadis <csevast at auth.gr>
Christos,
thanks ... works in the same way and there's no need for an own class, I
just have a problem with the rownumber.
If users add more than one line, there will exist 2 or more Comboboxes.
Each of them will return the right index, but so far I could not find a
way to get the right row, because the self.tableWidgetX.currentRow()
returns the last row where a text-cell was entered. This means row is -1
when nobody clicked somewhere on the grid, and if you enter row 2, and
then change the combobox in row 5, self.tableWidgetX.currentRow() will
return 2!
As the row-number in Serges solution is passed plain this is also not a
100% solution as the row-sorting could be changed (user sorts data by
clicking on headers, or rows are (re)moved/added by code). But if I
prevent this at last the row-number should be correct.
For short, the way I've tested your solution:
from PyQt5.QtWidgets import QComboBox
@pyqtSlot()
def on_pushButton_add_row_to_tableWidgetX_clicked(self):
tWid=getattr(self, "tableWidgetX")
tWid.setRowCount(tWid.rowCount()+1)
combo = QComboBox()
combo.setSizeAdjustPolicy(QComboBox.AdjustToContents)
combo.addItems(["A","B","C"])
tWid.setCellWidget(tWid.rowCount()-1, 3, combo) # ComboBox
goes to last row, column Nr 3
tWid.setColumnWidth(3, combo.size().width())
combo.currentIndexChanged.connect(self.on_spk_ver_rep_QComboBox_currentIndexChanged)
@pyqtSlot(int)
def on_spk_ver_rep_QComboBox_currentIndexChanged(self, index):
print(index, self.tableWidgetX.currentRow())
george
Am 23.09.2018 um 19:11 schrieb Christos Sevastiadis:
> Dear George,
>
> I think that you should create a slot for the specific QComboBox
> object and not for the cell of the QTableWidget object.
> For example, for a QComboBox created in the Ui_MainWindow.setupUI(),
> the corresponding slot created in the MainWindow.setupUI() should have
> the following form, for integer or string type index.
>
> @pyqtSlot(int)
> def on_spk_ver_rep_QComboBox_currentIndexChanged(self, index):
> """
> Slot documentation goes here.
>
> @param index DESCRIPTION
> @type int
> """
> # TODO: not implemented yet
> raise NotImplementedError
>
> @pyqtSlot(str)
> def on_spk_ver_rep_QComboBox_currentIndexChanged(self, p0):
> """
> Slot documentation goes here.
>
> @param p0 DESCRIPTION
> @type str
> """
> # TODO: not implemented yet
> raise NotImplementedError
>
> Christos
>
>
>
> On Sun, 23 Sep 2018 at 15:40, GM <mossl at gmx.net
> <mailto:mossl at gmx.net>> wrote:
>
> Hi @all,
>
> I've created a dialog-window with an QTableWidget. Users can add a
> row
> by using a pushbutton. In a cell of the new row appears a
> QComboBox. How
> can changes of this QComboBox trigger a function?
>
> It's no problem for to text-only-cells (I can use:
>
> @pyqtSlot(int, int)
> def on_tableWidgetX_cellChanged(self, row, column):
> print("cell changed: ", row, column)
>
> which works as intended.)
>
> Functions like
>
> @pyqtSlot(QComboBox)
> def on_tableWidgetX_itemChanged(self, item):
> print("OK1")
>
> @pyqtSlot(QComboBox)
> def on_tableWidgetX_itemClicked(self, item):
> print("Ok2")
>
> never recieve a signal.
>
> I think the QComboBox can not send a aignal. Originally the "Generate
> Dialog Code..."-dialog suggests to pass a "QTableWidgetItem*" to the
> pyqtSlot, but this Item is created during runtime, so it can not be
> found in the Ui_Dialog...
>
> Any suggestions?
>
>
> george
>
> _______________________________________________
> Eric mailing list
> Eric at riverbankcomputing.com <mailto:Eric at riverbankcomputing.com>
> https://www.riverbankcomputing.com/mailman/listinfo/eric
>
--
Georg Mößlacher
+43-664-735 69 327
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/eric/attachments/20180924/33c277dc/attachment-0001.html>
More information about the Eric
mailing list