Skip to content

Instantly share code, notes, and snippets.

@justinfx
Created April 21, 2023 22:26
Show Gist options
  • Save justinfx/134992bd323c76d55af2c1b2750ebd84 to your computer and use it in GitHub Desktop.
Save justinfx/134992bd323c76d55af2c1b2750ebd84 to your computer and use it in GitHub Desktop.
Qt examples of tracking QListWidget item text edits
"""
"Connect rename command in QListWidget item edit"
https://groups.google.com/g/python_inside_maya/c/lPoWGuXyFsg/m/sLiWOaJgBAAJ
"""
from PySide2 import QtCore, QtGui, QtWidgets
class MyListWidget(QtWidgets.QListWidget):
def __init__(self, *a, **kw):
super(MyListWidget, self).__init__(*a, **kw)
self.__last_edited = None
self.setEditTriggers(self.DoubleClicked)
self.itemChanged.connect(self._itemChanged)
def edit(self, idx, trigger=None, event=None):
self.__last_edited = idx.data()
super(MyListWidget, self).edit(idx, trigger, event)
def _itemChanged(self, item):
new_text = item.text()
if self.__last_edited is None or new_text == self.__last_edited:
return
print("would call: cmds.rename({!r}, {!r})".format(self.__last_edited, new_text))
class MyListWidget2(QtWidgets.QListWidget):
def __init__(self, *a, **kw):
super(MyListWidget2, self).__init__(*a, **kw)
self.__last_edited = None
self.setEditTriggers(self.DoubleClicked)
self.doubleClicked.connect(self._doubleClicked)
self.itemChanged.connect(self._itemChanged)
def _doubleClicked(self, idx):
self.__last_edited = idx.data()
def _itemChanged(self, item):
new_text = item.text()
if self.__last_edited is None or new_text == self.__last_edited:
return
print("would call: cmds.rename({!r}, {!r})".format(self.__last_edited, new_text))
def main():
app = QtWidgets.QApplication()
lst = MyListWidget()
# lst = MyListWidget2()
for i in range(3):
item = QtWidgets.QListWidgetItem("item{}".format(i))
item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
lst.addItem(item)
lst.show()
app.exec_()
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment