ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PYSIDE6 스타일
    PYTHON(파이썬)/PYSIDE6(GUI) 2024. 10. 24. 06:36
    728x90
    반응형

    애플리케이션의 외관과 느낌은 사용자 경험에 큰 영향을 미칩니다. PySide6에서는 위젯의 스타일을 제어할 수 있는 다양한 방법을 제공합니다. 이 장에서는 스타일을 사용하여 애플리케이션의 외관을 커스터마이즈하는 방법을 살펴보겠습니다.

     

    #### 기본 스타일 설정

    Qt는 여러 기본 스타일을 제공하며, 이러한 스타일을 사용하여 애플리케이션의 기본 외관을 설정할 수 있습니다. 기본 스타일에는 "Fusion", "Windows", "WindowsVista", "Macintosh" 등이 있습니다.

     

    **기본 스타일 설정 예제**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton

     

    app = QApplication(sys.argv)

    app.setStyle("Fusion")

     

    window = QMainWindow()

    window.setWindowTitle("Basic Style Example")

     

    button = QPushButton("Click Me")

    window.setCentralWidget(button)

     

    window.show()

    app.exec()

    ```

    이 예제에서는 "Fusion" 스타일을 사용하여 애플리케이션의 외관을 설정합니다.

     

    #### 스타일 시트 사용

    Qt 스타일 시트(QSS) CSS와 유사한 구문을 사용하여 위젯의 스타일을 지정할 수 있는 강력한 도구입니다. 스타일 시트를 사용하면 위젯의 색상, 글꼴, 경계선 등을 세밀하게 제어할 수 있습니다.

     

    **스타일 시트 적용 예제**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton

     

    app = QApplication(sys.argv)

     

    window = QMainWindow()

    window.setWindowTitle("Style Sheet Example")

     

    button = QPushButton("Click Me")

    button.setStyleSheet("""

        QPushButton {

            background-color: lightblue;

            border: 2px solid black;

            border-radius: 10px;

            font-size: 16px;

        }

        QPushButton:hover {

            background-color: yellow;

        }

    """)

     

    window.setCentralWidget(button)

    window.show()

    app.exec()

    ```

    이 예제에서는 스타일 시트를 사용하여 `QPushButton`의 배경색, 테두리, 글꼴 크기 등을 설정하고, 마우스 오버 시 배경색이 변경되도록 합니다.

     

    #### 전역 스타일 시트

    애플리케이션 전체에 스타일 시트를 적용하려면 `QApplication` 객체에 스타일 시트를 설정할 수 있습니다.

     

    **전역 스타일 시트 적용 예제**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton

     

    app = QApplication(sys.argv)

    app.setStyleSheet("""

        QMainWindow {

            background-color: #f0f0f0;

        }

        QPushButton {

            background-color: lightgreen;

            border: 1px solid black;

        }

    """)

     

    window = QMainWindow()

    window.setWindowTitle("Global Style Sheet Example")

     

    button = QPushButton("Click Me")

    window.setCentralWidget(button)

     

    window.show()

    app.exec()

    ```

    이 예제에서는 전역 스타일 시트를 사용하여 `QMainWindow` `QPushButton`의 스타일을 설정합니다.

     

    #### 스타일 시트 변수

    스타일 시트에서 변수와 상수를 사용하여 스타일 속성을 재사용할 수 있습니다.

     

    **스타일 시트 변수 사용 예제**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton

     

    app = QApplication(sys.argv)

    app.setStyleSheet("""

        QPushButton {

            --button-color: lightcoral;

            background-color: var(--button-color);

            border: 2px solid black;

            border-radius: 5px;

            font-size: 14px;

        }

        QPushButton:hover {

            background-color: var(--button-color);

            color: white;

        }

    """)

     

    window = QMainWindow()

    window.setWindowTitle("Style Sheet Variables Example")

     

    button = QPushButton("Click Me")

    window.setCentralWidget(button)

     

    window.show()

    app.exec()

    ```

    이 예제에서는 스타일 시트 변수(`--button-color`)를 사용하여 버튼의 색상을 설정하고, 이를 재사용하여 호버 상태의 색상도 지정합니다.

     

    #### 사용자 정의 스타일

    사용자 정의 스타일을 사용하여 위젯의 외관을 완전히 커스터마이즈할 수 있습니다. 이를 위해 `QProxyStyle` 클래스를 상속받아 새 스타일을 정의합니다.

     

    **사용자 정의 스타일 예제**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QProxyStyle, QStyleOption, QStyle

     

    class CustomStyle(QProxyStyle):

        def drawControl(self, element, option, painter, widget=None):

            if element == QStyle.CE_PushButton:

                option.palette.setColor(QPalette.Button, QColor("lightpink"))

            super().drawControl(element, option, painter, widget)

     

    app = QApplication(sys.argv)

    app.setStyle(CustomStyle())

     

    window = QMainWindow()

    window.setWindowTitle("Custom Style Example")

     

    button = QPushButton("Click Me")

    window.setCentralWidget(button)

     

    window.show()

    app.exec()

    ```

    이 예제에서는 `QProxyStyle`을 상속받아 버튼의 배경색을 커스터마이즈하는 사용자 정의 스타일을 정의합니다.

     

    ### 결론

    이 장에서는 PySide6에서 스타일을 사용하여 애플리케이션의 외관을 커스터마이즈하는 방법을 살펴보았습니다. 기본 스타일 설정, 스타일 시트, 전역 스타일 시트, 스타일 시트 변수, 사용자 정의 스타일 등을 사용하여 애플리케이션의 외관을 효율적으로 제어할 수 있습니다. 다음 장에서는 팔레트를 사용하여 색상 테마를 설정하는 방법을 알아보겠습니다.

    import sys
    from PySide6.QtWidgets import (
        QApplication,
        QMainWindow,
        QPushButton,
    )


    app = QApplication()

    #app.setStyle('Fusion')

    window = QMainWindow()
    button = QPushButton("Press me")
    window.setCentralWidget(button)
    window.show()

    app.exec()
    import sys
    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QProxyStyle, QStyleOption, QStyle
    from PySide6.QtGui import *

    class CustomStyle(QProxyStyle):
        def drawControl(self, element, option, painter, widget=None):
            if element == QStyle.CE_PushButton:
                option.palette.setColor(QPalette.Button, QColor("lightpink"))
            super().drawControl(element, option, painter, widget)

    app = QApplication(sys.argv)
    app.setStyle(CustomStyle())

    window = QMainWindow()
    window.setWindowTitle("Custom Style Example")

    button = QPushButton("Click Me")
    window.setCentralWidget(button)

    window.show()
    app.exec()

     

    728x90

    'PYTHON(파이썬) > PYSIDE6(GUI)' 카테고리의 다른 글

    PYSIDE6 아이콘  (0) 2024.10.24
    PYSIDE6 팔레트  (0) 2024.10.24
    PYSIDE6 QT리소스 시스템  (2) 2024.10.24
    PYSIDE6 QT디자이너 사용하기  (0) 2024.10.24
    PYSIDE6 QT디자이너 설치  (3) 2024.10.24
Designed by Tistory.