Как установить и получить «комментарий» текста с помощью setText? - PullRequest
1 голос
/ 08 июля 2019

Я пытаюсь сохранить строковые данные в QAbstractButton.text ().

Почему?

Я хочу отобразить короткое имя в самом тексте (), но могуназывайте длинное имя через 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 ]

1 голос
/ 09 июля 2019

Если вы хотите добавить дополнительные данные в виджет, почему бы просто не создать его подкласс и создать свой собственный?

class MyCustomButton(QtWidgets.QPushButton):

    def __init__(self, parent=None):
        super(MyCustomButton, self).__init__(parent)

        self.my_variable = None

Теперь вы можете продолжать использовать MyCustomButton, как обычную кнопку, а также добавлять любыетебе нравится my_variable.

0 голосов
/ 26 июля 2019

Я обнаружил, что каждый объект содержит переменную для 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
...