web-dev-qa-db-ja.com

pyqt:スタイルシートをカスタムウィジェットに適用する方法

# -*- coding: utf-8 -*-

import sys
from PyQt4.QtGui import *  
from PyQt4.QtCore import * 

class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.setFixedWidth(200)
        self.setFixedHeight(200)

        stylesheet = \
            ".QWidget {\n" \
            + "border: 20px solid black;\n" \
            + "border-radius: 4px;\n" \
            + "background-color: rgb(255, 255, 255);\n" \
            + "}"
        self.setStyleSheet(stylesheet)

if __name__ == '__main__':

    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

スタイルシートを使用してカスタムウィジェットに境界線を追加したいのですが、スタイルシートが機能していないようです。

9
Anke_Pet

まず、実際のウィジェットをサンプルに追加します。

    self.widget = QWidget(self)
    layout = QVBoxLayout(self)
    layout.addWidget(self.widget)

第二に、あなた自身に有利にして、三重引用符を使用してください:

    self.widget.setStyleSheet("""
        .QWidget {
            border: 20px solid black;
            border-radius: 10px;
            background-color: rgb(255, 255, 255);
            }
        """)

注意:この例のドットセレクタは冗長です。これは、QWidgetのサブクラスではなく、QWidget自体のインスタンスのみが選択されることを指定しています。 Qtドキュメントの StyleSheet Syntax ガイドを参照してください。

23
ekhumoro

プロジェクトフォルダーに、基本的なCSSファイルmystylesheet.cssを追加します。 Atomのようなマルチ言語エディターは、この種のものに最適です。CSSファイルという名前を付けたままにすると、構文の強調表示は適切に機能します。

次にドットをドロップします。 qtはあなたの意味を知っています。

mystylesheet.css

QWidget {
    border: 20px solid black;
    border-radius: 10px;
    background-color: rgb(255, 255, 255);
}
anyQelement.setStyleSheet(open('mystylesheet.css').read())
2
Eric Petersen