如何使用 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]