1

我正在尝试将字符串数据存储在 QAbstractButton.text() 中。

为什么?

我想在 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)

如何设置和获取此文本的评论部分?任何意见,将不胜感激!

4

2 回答 2

1

如果您想向小部件添加额外的数据,为什么不将其子类化并创建自己的?

class MyCustomButton(QtWidgets.QPushButton):

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

        self.my_variable = None

现在您可以MyCustomButton像普通按钮一样继续使用,也可以添加您喜欢的任何内容my_variable

于 2019-07-09T01:53:04.673 回答
0

我发现每个对象都包含一个 windowTitle 变量。如果这不是主窗口,则窗口标题通常留空,因此我可以在此处存储数据。

当然,这可能不是最干净的方法,但它现在可以使用。

Green Cell 的子类化很可能是解决此问题的最佳方法。但是,我主要使用 Qt Designer 构建 UI,并且希望主要将任何编辑保留在该包装器中。

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
于 2019-07-26T02:33:10.750 回答