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