2017-10-20 6 views
1

私は新しいスタイルがどのようになるかと思いまして、古いSIGNALとSLOTスタイルを使用して、2つのライン..コンボボックスに新しいスタイルの信号とスロットを使用していますか?

combobox.emit(SIGNAL("activated(int)"), combobox.currentIndex()) 
combobox.emit(SIGNAL("activated(const QString &)"), combobox.currentText()) 

を持っています。私はPythonには新しく、信号やスロットに関する多くの経験はありません。これをカバーする本当に良いリソースが浮かんでいますか?ドキュメントは実際に何が起こっていたのか理解するのに役立たなかった。

答えて

1

溶液が放出された信号の引数の型を示すためである。

combo.activated[type].connect(someSlot) 

例:

class Widget(QWidget): 
    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 
     self.setLayout(QVBoxLayout()) 
     combo = QComboBox(self) 
     self.layout().addWidget(combo) 
     combo.addItems(["item1", "item2", "item3"]) 
     combo.activated[int].connect(self.onActivatedIndex) 
     combo.activated[str].connect(self.onActivatedText) 

    @pyqtSlot(int) 
    def onActivatedIndex(self, index): 
     print(index) 

    @pyqtSlot(str) 
    def onActivatedText(self, text): 
     print(text) 


if __name__ == '__main__': 
    import sys 
    app = QApplication(sys.argv) 
    w = Widget() 
    w.show() 
    sys.exit(app.exec_()) 
+0

、この場合で発光対接続を使用する理由はありますか? –

+0

Connect vs emitは2つの相補的なものです。connectを使用するとシグナルとスロットの間の接続が作成されますが、シグナルの送信時に以前に接続されたすべてのスロットを呼び出す必要があることをPyQtに伝えます。信号。したがって、connectとemitの間には何の違いもありません。 – eyllanesc

+0

ちょうど私がこれを理解していることを確認するために、スロットにいくつかの信号が接続されていて、それらのすべてを更新したい場合、私はemitを使用しますか? –

関連する問題