[Python] Pyqt QtableWidget itemPressed(int,int)

Giuseppe Amato giuamato a gmail.com
Lun 17 Mar 2014 16:39:11 CET


Salve a tutti,
Sono da poco passato a PyQt e ho un problema con i signal. Ho una
QMainWindow che richiama un QDialog su cui è presente un QtableWidget. Il
tableWidget ha un signal, vedi sotto, che stampa riga e colonna dell'item
cliccato.

Siccome il QDialog e il QMainWindow sono in due file separati, aggiungendo
il codice sotto al file del QDialog non ho problemi e funziona tutto a
dovere.

File: TFT_Output_GUI.py
(...)
        QtCore.QObject.connect(self.tableWidget,
            QtCore.SIGNAL(_fromUtf8("cellPressed(int,int)")),
            self.test)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def test(self,row,column):
        print row,column
(...)
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Dialog = QtGui.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

Quando invece lo vado a richiamare dal QMainWindow non viene mai triggerato
l'evento cellPressed e non entra nella funzione test.
A seguire il codice differente:

File: MyApp.py

class ResultDialog():
    def __init__(self,parent=None):
        self.Dialog = QtGui.QDialog(parent.MainWindow)
        self.ui = TFT_Output_Gui.Ui_Dialog()
        self.ui.setupUi(self.Dialog)

        QtCore.QObject.connect(self.ui.tableWidget,
            QtCore.SIGNAL(TFT_Output_Gui._fromUtf8("cellPressed(int,int)")),
            self.test)
        QtCore.QMetaObject.connectSlotsByName(self.Dialog)
        self.Dialog.show()

    def test(self,row,column):
        print row,column

Qualche idea del perchè succeda?

-- 
____________________________
Giuseppe Amato
e-mail: giuamato a gmail.com
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140317/49c2479d/attachment.html>


Maggiori informazioni sulla lista Python