如何使用 setText 设置和获取“评论”文本?

Posted

技术标签:

【中文标题】如何使用 setText 设置和获取“评论”文本?【英文标题】:How to Set and Get "comment" text using setText? 【发布时间】:2019-07-08 08:30:59 【问题描述】:

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

为什么?

我想在 text() 本身中显示短名称,但可以通过代码通过 text() “注释”调用长名称。

您可以在 QT Designer 中编写“cmets”,但我无法在 Python 中复制它。 查看记事本中的代码,似乎“注释”文本是在文本字符串本身中创建的:

<property name="text">
  <string extracomment="toast">Select object and click here</string>

我目前在python中拥有的是:

Xsl = cmds.ls(sl=1)[0]
Xbutton.setText(Xsl)

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

【问题讨论】:

没有办法使用 qt 设计器中的comment 字段来执行此操作。它是only meant to be used by translators,不能以编程方式访问。如果您想为 qt 设计器小部件添加额外的属性,请使用widget promotion。 【参考方案1】:

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

class MyCustomButton(QtWidgets.QPushButton):

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

        self.my_variable = None

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

【讨论】:

太棒了!抱歉回复晚了,我被拉到别的事情上了。具有讽刺意味的是,一项涉及创建基于对象的元子类化的任务(到目前为止我从未做过)。我还没有机会测试这个实现,但我会给你答案,因为这很可能是我应该解决这个问题的方式:p 谢谢!【参考方案2】:

我发现每个对象都包含一个 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

【讨论】:

以上是关于如何使用 setText 设置和获取“评论”文本?的主要内容,如果未能解决你的问题,请参考以下文章

Android:使用 Textview.SetText(characterSequence) 获取 [OBJ]

setText 没有将文本设置为 EditText

如何在 setText 之后滚动 JavaFX TextArea

如何在android中获取特定列表视图项目的ID?

在 JLabel 中打印句子

如何修复翻译无法使用TextView.setText()?