【发布时间】:2019-10-20 11:17:25
【问题描述】:
我已将 QListWidget 中的项目设为可编辑,以便在需要时执行重命名。
要进行重命名,用户可以“双击”项目,其中将提供一个 QLineEdit,使人们能够编辑文本,目前我在捕获 QLineEdit 之后的新名称时遇到问题。
尝试使用 itemDoubleClicked 和 currentTextChanged 信号,但它似乎没有返回新名称。
例如,我试图将Trhee 重命名为Three,但在rename_item() 下,它返回给我Trhee
class Dialog(QtGui.QDialog):
def __init__(self, parent=None):
super(Dialog, self).__init__()
self.listWidget = QtGui.QListWidget()
items = ['One', 'Two', 'Trhee']
for item in items:
self.listWidget.addItem(item)
self.listWidget.currentTextChanged.connect(self.rename_item)
# self.listWidget.itemDoubleClicked.connect(self.rename_item)
for index in range(self.listWidget.count()):
item = self.listWidget.item(index)
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEditable)
item.setCheckState(QtCore.Qt.Checked)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.listWidget)
def rename_item(self):
prev_item_name = self.listWidget.currentItem()
print 'before rename: ', prev_item_name.text()
# Returns me the same value as prev_item_name...
new_item_name = self.listWidget.currentItem()
print 'after rename: ', new_item_name.text()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Dialog()
window.setGeometry(600, 100, 300, 200)
window.show()
sys.exit(app.exec_())
【问题讨论】:
标签: python pyqt pyqt4 qlistwidget