Как установить и получить "комментарий" текста с помощью 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
Другие вопросы по тегам