我正在研究我的Python项目并使用PySide作为我的GUI语言。大约一周前我问了同样的问题,但答案无法解决我的问题。 所以,我问了新问题并提供了有关我项目的更多细节。
我之前的问题是:A .py file which compiled from .qrc file( using pyside-rcc ) does not work
我使用pyside-uic从.ui文件生成.py文件,并使用pyside-rcc从.qrc文件生成.py文件。
这是我的文件路径和.qrc文件
* CLoginWidget.py由pyside-uic生成,CLoginWidgetRes_rc.py由pyside-rcc生成
这是我使用这些资源的示例代码
self.enterButton.setStyleSheet("QPushButton {\n"
" image: url(:/button/res/login_enter_button.gif);\n"
"border-radius: 5px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" image: url(:/button/res/login_entered_button.gif);\n"
"}")
问题是我的程序中没有显示图像。 有谁知道会发生什么以及如何解决这个问题。
感谢您的回答;)
答案 0 :(得分:2)
您的示例中的实际问题似乎与stylesheet-syntax有关。 image
的{{3}}表示:
此属性仅适用于子控件 - 我们不支持其他 元件。
因此它显然无法与QPushButton
一起使用,因为它没有任何子控件。也许您打算使用border-image
或background-image
?
如果我使用QSS properties reference中列出的关于此主题的方法设置资源模块,这些属性与我的预期完全一致。
以下是我测试过的实际样式表:
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_())