У меня довольно простой вопрос PyQt. (Python 3.4, PyQt 4.11.3, Qt 4.8.5). Я построил очень простой диалог с помощью Qt Designer (Ui_Dialog). Этот объект имеет QPushButton, QLineEdit и QListWidget. Я написал еще один объект, который наследует от Ui_Dialog, и устанавливает сигнал returnPressed из QLineEdit, который должен добавить некоторый текст в QListWidget. К сожалению, это не работает.PyQt: ListWidget.insertItem не показан
Вот мой код:
import sys
from PyQt4 import QtGui
from dialog import Ui_Dialog
class ImDialog(QtGui.QDialog, Ui_Dialog):
def __init__(self):
super(ImDialog, self).__init__()
self.setupUi(self)
self.lineEdit.returnPressed.connect(self.additem)
self.pushButton.clicked.connect(self.listWidget.clear)
def additem(self):
text = self.lineEdit.text()
print(text)
self.listWidget.insertItem(0, text)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
ui = ImDialog()
ui.show()
sys.exit(app.exec_())
текст в редакторе строки печатает отлично на терминал, но он не добавляется к listWidget.
Интересно, если я прокомментирую строку sys.exit и запустил ее в терминале IPython, я могу добавить столько же текста, сколько мне нравится в listWidget без проблем.
[In 1]: %run that_program.py
[In 2]: ui.listWidget.insertItem(0, "Test") # This works fine
Если у кого есть какие-либо предложения, чтобы получить эту работу (за пределами IPython), я был бы признателен за помощь. Спасибо
Благодарим вас за полезный отзыв. Я ударился головой о стену с этим. Я рад, что это действительно то, что я думал. В будущем я буду следить за этим поведением по умолчанию. – Ryan