【发布时间】:2015-02-08 16:56:17
【问题描述】:
我有一个相当简单的 PyQt 问题。 (Python 3.4、PyQt 4.11.3、Qt 4.8.5)我使用 Qt Designer (Ui_Dialog) 构建了一个非常简单的对话框。这个对象有一个 QPushButton、一个 QLineEdit 和一个 QListWidget。我编写了另一个继承自 Ui_Dialog 的对象,并设置了来自 QLineEdit 的 returnPressed 信号,该信号应该向 QListWidget 添加一些文本。不幸的是,这不起作用。
这是我的代码:
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 之外),我将不胜感激。谢谢
【问题讨论】:
标签: python pyqt signals-slots qt-designer qlistwidget