[英]How to set relative path in Qt Stylesheet?
我正在嘗試使用樣式表將圖片添加到 PyQt5 中的按鈕。 如果我使用圖片的絕對路徑,它工作正常,但我需要使用相對路徑。 我已經嘗試過pythonic方式(注釋掉的部分),但它可能因為反斜杠而無法正常工作。 我知道 Qt 資源,但我不明白如何使用它們。 關聯
import os, sys
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
#scriptDir = os.path.dirname(os.path.realpath(__file__))
#pngloc = (scriptDir + os.path.sep + 'resources' + os.path.sep + 'min.png')
button1 = QPushButton("", self)
button1.setStyleSheet('QPushButton {'
'background-image: url(e:/new/resources/min.png);'
'}')
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
如果您想使用相對路徑,那么一個不錯的選擇是使用創建虛擬路徑的Qt 資源系統。 .qrc 的優點是它們允許應用程序不依賴本地文件,因為資源被轉換為 python 代碼。
對於這種情況,可以使用以下.qrc:
資源.qrc
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>resources/min.png</file>
</qresource>
</RCC>
所以你需要使用 pyrcc5 將 .qrc 轉換為 .py:
pyrcc5 resource.qrc -o resource_rc.py
或者
python -m PyQt5.pyrcc_main resource.qrc -o resource_rc.py
然后你需要將文件導入到腳本中:
主文件
import os, sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
import resource_rc
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
button1 = QPushButton(self)
button1.setStyleSheet(
"""QPushButton {
background-image: url(:/resources/min.png);
}"""
)
def main():
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
├── main.py
├── resource.qrc
├── resource_rc.py
└── resources
└── min.png
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.