PySide2 ,按钮没有得到 setStyleSheets

Posted

技术标签:

【中文标题】PySide2 ,按钮没有得到 setStyleSheets【英文标题】:PySide2 , button doesn't get setStyleSheets 【发布时间】:2018-04-01 15:57:58 【问题描述】:

试图在 Maya 中获取 PySide2 的一些基础知识,现在我遇到了问题,那个按钮没有得到我想要的 translateButtonX.setStyleSheet(...),它只是忽略了它。我尝试调试它并注意到,如果我设置window.setStyleSheet(...) 不是来自图像,例如来自颜色 rgb,那么一切正常。有人知道我错过了什么吗?

import maya.cmds as cmds
from PySide2 import QtCore
from PySide2 import QtGui
from PySide2 import QtWidgets
import maya.OpenMayaUI as omui

try:
    from shiboken import wrapInstance
except:
    from shiboken2 import wrapInstance


def getMayaWindow():
    pointer = omui.MQtUtil.mainWindow()
    if pointer is not None:
        return wrapInstance(long(pointer), QWidget)

######################################################################
def constraintMaster_UI():
    objectName = 'PyConstraintMasterWin'
    #check if ui already exists or not
    if cmds.window('PyConstraintMasterWin', exists=1):
        cmds.deleteUI('PyConstraintMasterWin',wnd=1)

    #create window#

    parent = getMayaWindow()
    window = QtWidgets.QMainWindow(parent)
    window.setObjectName(objectName)
    window.setWindowTitle('Constraint Master')

    #create main widget#

    mainWidget = QWidget()
    window.setCentralWidget(mainWidget)
    QtWidgets.QStyleFactory.create('Windows')

    #Create main vertical layout#

    verticalLayout = QtWidgets.QVBoxLayout(mainWidget)
    imagePath = cmds.internalVar(upd=1) + 'icons/test.png'
    window.setStyleSheet('background-image:url(' + imagePath + 
    ');border:solid black 1px;')

    #create the translate layout#

    translateLayout = QtWidgets.QHBoxLayout()
    verticalLayout.addLayout(translateLayout)

    #create translate label#

    translateLabel = QtWidgets.QLabel('Translate:')
    translateLayout.addWidget(translateLabel)

    translateButtonX = QtWidgets.QPushButton('X')
    translateLayout.addWidget(translateButtonX)
    translateButtonX.setStyleSheet('background-color:rgb(0, 210, 
    255);border:white 1px;')


    #show the window
    window.show()

constraintMaster_UI()

最好的问候!

【问题讨论】:

【参考方案1】:

尝试了一个最小的示例,colorimage 都有效。 可能因为是Maya插件,所以图片的路径不存在,试试获取绝对路径,这样就确定了:

imagePath = os.path.abspath(cmds.internalVar(upd=1) + 'icons/test.png')

那么你不会关心插件是否从不同的目录执行。

【讨论】:

以上是关于PySide2 ,按钮没有得到 setStyleSheets的主要内容,如果未能解决你的问题,请参考以下文章

如何移动按钮 Pyside2

Pyside2 QGuiApplication,Gui冻结按钮点击

Python pyside2按钮禁用导致灰色怎么调回原来颜色?

为啥我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments

Winform和WPF 界面 花屏 闪烁?

带有 Pyside2 和 Matplotlib 的 Pyinstaller 无法正常工作