Created
April 21, 2023 22:26
-
-
Save justinfx/134992bd323c76d55af2c1b2750ebd84 to your computer and use it in GitHub Desktop.
Qt examples of tracking QListWidget item text edits
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
"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