Rumah >pembangunan bahagian belakang >Tutorial Python >Klik butang PyQt4 daftar berbilang kali apabila diklik

Klik butang PyQt4 daftar berbilang kali apabila diklik

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBke hadapan
2024-02-09 18:00:05710semak imbas

Klik butang PyQt4 daftar berbilang kali apabila diklik

Kandungan soalan

Saya baru menggunakan pyqt4 dan selepas banyak carian saya tidak menemui maklumat tentang isu yang saya lihat dalam gui.

Masalahnya ialah apabila pengguna mengklik butang getsingleitems, fungsi tersebut berjalan dengan bilangan kali yang sama seperti pengguna mengklik getallitems . Contohnya ialah jika pengguna mengklik getallitems untuk mengisi medan item dan kemudian mengklik getsingleitem, kemudian getitem berjalan sekali dan hasilnya dicetak sekali seperti yang diharapkan. Walau bagaimanapun, jika pengguna memilih item lain daripada senarai dan mengklik getallitems sekali lagi, dan kemudian mengklik getsingleitem, hasilnya ialah getitem berjalan 2x, jadi 2x dicetak. Setiap larian akan meningkat, jadi walaupun tanpa mengubah pemilihan, mengklik getallitems 4x dan kemudian getitem akan berjalan 4x dengan mengklik getsingleitem. Satu-satunya cara untuk menyegarkannya ialah menutup gui dan membukanya semula. Sebarang bantuan amatlah dihargai.

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_()

Jawapan betul


Nampaknya anda sedang menjalankan sambungan baharu setiap kali getitems 时添加到 getsingleitem.clicked, Jadi clicked isyarat disambungkan ke slot yang sama beberapa kali, Ini mengakibatkan tingkah laku yang anda perhatikan.

Talian mudah alih

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

Dari getitems__init__ sepatutnya menyelesaikan masalah ini, saya rasa.

Atas ialah kandungan terperinci Klik butang PyQt4 daftar berbilang kali apabila diklik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam