您示例中的实际问题似乎与样式表语法有关。 QSS properties reference for image 声明:
此属性仅适用于 子控件 - 我们不支持其他
元素。
所以它显然不适用于QPushButton,因为它没有任何子控件。也许您打算使用border-image 或background-image?
如果我使用我的previous answer 中概述的方法设置资源模块,这些属性对我来说完全符合我的预期。
这是我测试的实际样式表:
self.button.setStyleSheet("""
QPushButton {
background-image: url(:/button/res/image.gif);
}
""")
编辑:
下面是一个最小的工作示例,展示了如何在 pyside 中正确使用资源。您需要做的就是确保有一个名为res/login_enter_button.gif 的图像文件,然后将下面的示例文件保存在包含res 目录的目录中。然后你可以这样做:
pyside-uic -o example_ui.py example.ui
pyside-rcc -o example_rc.py example.qrc
一切都会按预期进行。
example.qrc:
<RCC>
<qresource prefix="button">
<file>res/login_enter_button.gif</file>
</qresource>
</RCC>
example.ui:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Window</class>
<widget class="QWidget" name="Window">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>171</width>
<height>61</height>
</rect>
</property>
<property name="windowTitle">
<string>Hello World</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="button">
<property name="text">
<string>Test</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="example.qrc"/>
</resources>
<connections/>
</ui>
example.py
from PySide import QtGui
from example_ui import Ui_Window
class Window(QtGui.QWidget, Ui_Window):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
self.button.setStyleSheet("""
QPushButton {
background-image: url(:/button/res/login_enter_button.gif);
}
""")
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())