是否有可能以某种方式实现编辑QListWidget而无需像此代码中那样打开其他窗口。那些。当您单击一个组件时QListWidget,您可以立即更改其中的文本。我认为当您单击item出现在其位置QLineEdit并在其中进行编辑时,您可以这样做,但这似乎不是最好的主意
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtGui
class MainWindwos(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setFont(QtGui.QFont('Times', 13))
self.setFixedSize(400, 600)
self.listwidget = QtWidgets.QListWidget(self)
self.listwidget.resize(400, 600)
self.listwidget.addItem('привет')
self.listwidget.itemClicked.connect(self.edit_item)
def edit_item(self, item):
self.dialog = QtWidgets.QDialog()
self.dialog.setFont(QtGui.QFont('Times', 13))
self.edit = QtWidgets.QLineEdit(self.dialog)
self.edit.resize(200, 30)
self.push = QtWidgets.QPushButton(self.dialog)
self.push.setText('сохранить')
self.push.move(0, 50)
self.push.clicked.connect(lambda: item.setText(self.edit.text()))
self.push.clicked.connect(lambda: self.dialog.close())
self.dialog.setFixedSize(200, 200)
self.dialog.show()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
main = MainWindwos()
main.show()
sys.exit(app.exec_())
有必要通过Qt.ItemIsEditable标志指定列表项的可编辑性:
在QListWidget上调用时,
addItem("привет")它实际上隐藏了addItem(QListWidgetItem("привет")),并且列表项默认没有编辑标志。带flags的例子
item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable)写成例子,可以简写:item.setFlags(item.flags() | Qt.ItemIsEditable)不仅可以为每个元素单独配置编辑元素的能力,还可以通过setEditTriggers通过小部件列表进行配置。例如,此示例将禁用编辑,但允许编辑元素: