Как установить и получить "комментарий" текста с помощью setText?
Я пытаюсь сохранить строковые данные в QAbstractButton.text().
Почему?
Я хочу отобразить короткое имя в самом тексте (), но могу назвать длинное имя через текст (), "комментировать" через код.
Вы можете написать "комментарии" в QT Designer, но я не смог повторить это в Python. Глядя на код в блокноте, кажется, что текст комментария создается внутри самой текстовой строки:
<property name="text">
<string extracomment="toast">Select object and click here</string>
В настоящее время у меня есть в Python:
Xsl = cmds.ls(sl=1)[0]
Xbutton.setText(Xsl)
Как я могу также установить и получить часть комментариев этого текста? Любой совет будет принят во внимание!
2 ответа
Если вы хотите добавить дополнительные данные в виджет, почему бы просто не создать его подкласс и создать свой собственный?
class MyCustomButton(QtWidgets.QPushButton):
def __init__(self, parent=None):
super(MyCustomButton, self).__init__(parent)
self.my_variable = None
Теперь вы можете продолжать использовать MyCustomButton
как обычная кнопка, а также добавить все, что вам нравится my_variable
,
Я обнаружил, что каждый объект содержит переменную для windowTitle. Если это не главное окно, заголовок окна обычно остается пустым, поэтому я могу хранить данные здесь.
Конечно, это, вероятно, не самый чистый подход, но он пока подойдет.
Подклассы Green Cell, скорее всего, являются лучшим способом решения этой проблемы. Тем не менее, я в основном строю пользовательский интерфейс с использованием Qt Designer и хочу в первую очередь сохранить любые изменения в этой оболочке.
def store_selected_node_on_button(self):
"""
Changes the text of a given button to store an object's name
As the button isn't a window, I can set the window title to store the long name of the selected object.
:return: None
"""
button = self.sender()
sl = cmds.ls(sl=1, long=True)
if not sl:
button.setText("Select object and click here")
button.setWindowTitle("")
else:
button.setText(sl[0].split("|")[-1])
button.setWindowTitle(sl[0])
return