ホームページ  >  記事  >  バックエンド開発  >  PyQt4ボタンがクリックされたときに複数回クリック登録

PyQt4ボタンがクリックされたときに複数回クリック登録

WBOY
WBOY転載
2024-02-09 18:00:05639ブラウズ

PyQt4ボタンがクリックされたときに複数回クリック登録

質問の内容

私は pyqt4 を初めて使用するもので、何度も検索しましたが、GUI で発生している問題に関する情報が見つかりませんでした。

問題は、ユーザーが getsingleitems ボタンをクリックすると、ユーザーが getallitems をクリックしたのと同じ回数だけ関数が実行されることです。たとえば、ユーザーが getallitems をクリックして項目フィールドに値を設定し、次に getsingleitem をクリックすると、getitems が 1 回実行され、結果が期待どおりに 1 回出力されます。ただし、ユーザーがリストから別の項目を選択して getallitems を再度クリックし、次に getsingleitem をクリックすると、結果として getitem が 2 回実行されるため、2x が出力されます。実行のたびに増加するため、選択を変更しなくても、getallitems を 4 回クリックし、次に getsingleitem をクリックすると getitem が 4 回実行されます。更新する唯一の方法は、GUI を閉じて再度開くことです。ご協力をいただければ幸いです。

class UpdateItem(QDialog, updateitem_ui.Ui_updateitem):
    def __init__(self):
        QDialog.__init__(self)
        self.setupUi(self)

        tests = ['Test1', 'Test2', 'Test3']

        self.list.addItems(tests)
        self.exit.clicked.connect(self.close)

        self.setFocus()

        self.getAllItems.clicked.connect(self.getitems)

    def getitems(self):
        self.items.clear()

        self.items.addItems(self.list.currentText())

        self.getSingleItem.clicked.connect(self.getitem)

    def getitem(self):
        self.item_id = self.items.currentText()
        print(self.item_id)

app = QApplication(sys.argv)
gui = UpdateItem()
gui.show()
app.exec_()

正解


どうやら、 getitems を実行するたびに、 getsingleitem.clicked に新しい接続を追加しているようです。 したがって、clicked 信号は同じスロットに複数回接続されます。 これにより、観察された動作が発生します。

モバイル回線

リーリー

getitems から __init__ に移行すると、この問題は解決されるはずです。

以上がPyQt4ボタンがクリックされたときに複数回クリック登録の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。