在Python/Maya中使用字符串中的变量,特别是样式表

2024-10-01 15:38:08 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我关于在Maya UI中更改颜色的问题的后续。我很幸运地得到了一些很好的信息,继续这个练习,我试图在样式表中为RGB float值添加一个变量

我已经学习了很多,并且意识到我本质上是在尝试在字符串中使用int或float,所以我制作了一个随机的float变量列表,我认为我可以用于“color”属性而不是“rgb”。到目前为止,任何用.I格式连接数据的尝试似乎都无法实现。还在谷歌上搜索答案,但我想问问是否有人能给我指出正确的方向

gMainWindow = maya.mel.eval('$tmpVar=$gMainWindow')
import random
import shiboken2
from maya import cmds
from maya import OpenMayaUI
from PySide2 import QtWidgets
from PySide2.QtCore import *
from PySide2.QtWidgets import *

def clamp(num, min_value, max_value):
   return max(min(num, max_value), min_value)

r = random.randrange(0,255)
g = random.randrange(0,255)
b = random.randrange(0,255)
rgb = [r,g,b]

colorRGB = ['Red', 'White', 'Blue']
color2= random.choice(colorRGB)

window = cmds.window(gMainWindow, edit=True, backgroundColor=(r,g,b))

panels = cmds.getPanel(scriptType="scriptEditorPanel")  # Get all script editor panel names.

if panels:  # Make sure one actually exists!
    script_editor_ptr = OpenMayaUI.MQtUtil.findControl(panels[0])  # Grab its pointer with its internal name.
    script_editor = shiboken2.wrapInstance(long(script_editor_ptr), QtWidgets.QWidget)  # Convert pointer to a QtWidgets.QWidget
    editor_win = script_editor.parent().parent().parent().parent()  # Not very pretty but found that this was the best object to color with. Needed to traverse up its parents.
    editor_win.setObjectName("scriptEditorFramePanel")  # This object originally had no internal name, so let's set one.
    #editor_win.setStyleSheet("scriptEditorFramePanel {border: 13px solid rgb(155,155,155);}")  # Set its styleSheet with its internal name so that it doesn't effect any of its children.
    editor_win.setStyleSheet("scriptEditorFramePanel {border: 13px solid color{0}}".format(color2) 

我特别想改变这一行:

editor_win.setStyleSheet("scriptEditorFramePanel {border: 13px solid rgb(155,155,155);}") 

我可以通过更改RGB值或设置“color:(color name)”,手动分配颜色,但我想看看如何在这样的字符串中使用变量会很有趣

谢谢! 亚历克斯


Tags: namefromimportvaluescriptrandomrgbfloat
1条回答
网友
1楼 · 发布于 2024-10-01 15:38:08

您遇到的问题是由于字符串中的文字大括号与占位符值周围的大括号混淆。您需要将它们替换为一行中的两个大括号,以告诉python将它们视为文字大括号:

 editor_win.setStyleSheet("scriptEditorFramePanel {{border: 13px solid color{0}}}".format(color2) 

相关问题 更多 >

    热门问题