PySide2, кнопка не получает setStyleSheets

Я пытался получить некоторые основы PySide2 внутри Maya, и прямо сейчас я столкнулся с проблемой: эта кнопка не получает 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()

С наилучшими пожеланиями!


person Vladlen Afanasjev    schedule 01.04.2018    source источник


Ответы (1)


Попробовал минимальный пример, и цвет и изображение работают. Возможно, поскольку это плагин Maya, путь к изображению не существует, попробуйте получить абсолютный путь, чтобы быть уверенным:

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

тогда вам все равно, если плагин запустится из другого каталога.

person cmaureir    schedule 14.01.2019