ホームページ > バックエンド開発 > Python チュートリアル > PyQt4ボタンがクリックされたときに複数回クリック登録

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

WBOY
リリース: 2024-02-09 18:00:05
転載
666 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート