gpt4 book ai didi

python - PyQt:ListWidget.insertItem 未显示

转载 作者:行者123 更新时间:2023-12-01 04:55:51 24 4
gpt4 key购买 nike

我有一个相当简单的 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 之外),我将不胜感激。谢谢

最佳答案

对话框中只有一个按钮,因此它将变成 auto-default 。这意味着每当您在对话框中按 Enter 键时,按钮都会收到按下事件,即使它当前没有键盘焦点。

因此,该项目确实被添加到列表小部件中 - 只是它随后立即被自动默认按钮清除。

要解决此问题,请重置自动默认值,如下所示:

    self.pushButton.setAutoDefault(False)

(注意:您也可以在 Qt Designer 中更改此属性)。

关于python - PyQt:ListWidget.insertItem 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27401994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com