<div dir="ltr">Salve a tutti,<div>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.</div>
<div><br></div><div>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.</div><div><br></div><div>File: TFT_Output_GUI.py</div>
<div>(...)</div><div><div> QtCore.QObject.connect(self.tableWidget,</div><div> QtCore.SIGNAL(_fromUtf8("cellPressed(int,int)")),</div><div> self.test)</div><div> QtCore.QMetaObject.connectSlotsByName(Dialog)</div>
<div><br></div><div> def test(self,row,column):</div><div> print row,column</div><div>(...)<br></div><div><div>if __name__ == "__main__":</div><div> import sys</div><div> app = QtGui.QApplication(sys.argv)</div>
<div> Dialog = QtGui.QDialog()</div><div> ui = Ui_Dialog()</div><div> ui.setupUi(Dialog)</div><div> Dialog.show()</div><div> sys.exit(app.exec_())</div></div><div><br></div><div>Quando invece lo vado a richiamare dal QMainWindow non viene mai triggerato l'evento cellPressed e non entra nella funzione test.</div>
<div>A seguire il codice differente:</div><div><br></div><div>File: MyApp.py</div><div><br></div><div><div>class ResultDialog():</div><div> def __init__(self,parent=None):</div><div> self.Dialog = QtGui.QDialog(parent.MainWindow) </div>
<div> self.ui = TFT_Output_Gui.Ui_Dialog() </div><div> self.ui.setupUi(self.Dialog) </div><div><br></div><div> QtCore.QObject.connect(self.ui.tableWidget,</div><div> QtCore.SIGNAL(TFT_Output_Gui._fromUtf8("cellPressed(int,int)")),</div>
<div> self.test)</div><div> QtCore.QMetaObject.connectSlotsByName(self.Dialog)</div><div> self.Dialog.show()</div></div><div><br></div><div><div> def test(self,row,column):</div><div> print row,column</div>
</div><div><br></div><div>Qualche idea del perchè succeda?</div><div><br></div>-- <br>____________________________<br>Giuseppe Amato<br>e-mail: <a href="mailto:giuamato@gmail.com" target="_blank">giuamato@gmail.com</a>
</div></div>