簡體   English   中英

如何在 Qt 樣式表中設置相對路徑?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM