В приведенном ниже коде после любого вида редактирования или завершения в окне редактирования строки будет вызвана функция изменения.Затем программа застрянет в бесконечном цикле, в результате чего появятся непрерывные всплывающие окна QMessageBox и операторы печати «modifying ..», а затем возможный сбой программы.
Я пытался поставить self.win.processEvents()
в разных местах, но это не помогает.
from PyQt5 import QtWidgets
class Test:
def __init__(self):
self.app = QtWidgets.QApplication([])
self.win = QtWidgets.QMainWindow()
self.le_dwell_filter = QtWidgets.QLineEdit()
self.le_dwell_filter.editingFinished.connect(self.modify)
self.win.setCentralWidget(self.le_dwell_filter)
self.win.show()
def modify(self):
print('Modifying...')
msgbox = QtWidgets.QMessageBox()
msgbox.setText('modification done!')
msgbox.show()
def start(self):
self.app.exec()
if __name__ == '__main__':
my_test = Test()
my_test.start()
Я бы подумал, что это напечатает один «Modifying ...», но каким-то образом QMessageBox продолжает появляться, и печать продолжает происходить ..Я думаю, что это связано с циклом PyQt Event?