ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PYSIDE6 액션, 도구 모음, 메뉴
    PYTHON(파이썬)/PYSIDE6(GUI) 2024. 10. 23. 06:32
    728x90
    반응형

     GUI 애플리케이션은 일반적으로 사용자가 명령을 쉽게 접근할 수 있도록 도구 모음과 메뉴를 제공합니다. PySide6에서는 이러한 기능을 구현하는 데 필요한 다양한 클래스와 메서드를 제공합니다. 이 장에서는 액션, 도구 모음, 메뉴를 사용하여 애플리케이션을 더욱 기능적으로 만드는 방법을 살펴보겠습니다.

     

    #### 액션

    액션은 메뉴 항목이나 도구 모음 버튼과 같은 사용자 인터페이스 요소에 연결된 명령입니다. QAction 클래스를 사용하여 액션을 생성할 수 있습니다.

     

    **QAction 사용하기**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QAction, QMessageBox

     

    class MainWindow(QMainWindow):

        def __init__(self):

            super().__init__()

            self.setWindowTitle("QAction Example")

     

            # 액션 생성

            action = QAction("Say Hello", self)

            action.triggered.connect(self.say_hello)

     

            # 메뉴 생성 및 액션 추가

            menu = self.menuBar().addMenu("File")

            menu.addAction(action)

     

        def say_hello(self):

            QMessageBox.information(self, "Hello", "Hello, World!")

     

    app = QApplication(sys.argv)

    window = MainWindow()

    window.show()

    app.exec()

    ```

    이 예제에서 QAction을 생성하고, 메뉴에 추가한 다음, 해당 액션이 트리거될 때 슬롯을 호출하도록 연결했습니다.

     

    #### 도구 모음

    도구 모음은 일반적으로 아이콘 버튼으로 구성된 일련의 명령입니다. QToolBar 클래스를 사용하여 도구 모음을 생성할 수 있습니다.

     

    **QToolBar 사용하기**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QToolBar, QAction, QMessageBox

     

    class MainWindow(QMainWindow):

        def __init__(self):

            super().__init__()

            self.setWindowTitle("QToolBar Example")

     

            # 액션 생성

            action = QAction("Say Hello", self)

            action.triggered.connect(self.say_hello)

     

            # 도구 모음 생성 및 액션 추가

            toolbar = QToolBar("My Toolbar")

            toolbar.addAction(action)

            self.addToolBar(toolbar)

     

        def say_hello(self):

            QMessageBox.information(self, "Hello", "Hello, World!")

     

    app = QApplication(sys.argv)

    window = MainWindow()

    window.show()

    app.exec()

    ```

    이 예제에서 QToolBar를 생성하고, QAction을 도구 모음에 추가한 다음, 도구 모음을 메인 창에 추가했습니다.

     

    #### 메뉴

    메뉴는 사용자가 명령을 선택할 수 있도록 도와주는 중요한 인터페이스 요소입니다. QMenuBar QMenu 클래스를 사용하여 메뉴를 생성할 수 있습니다.

     

    **QMenuBar QMenu 사용하기**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QAction, QMenu

     

    class MainWindow(QMainWindow):

        def __init__(self):

            super().__init__()

            self.setWindowTitle("QMenu Example")

     

            # 액션 생성

            action = QAction("Say Hello", self)

            action.triggered.connect(self.say_hello)

     

            # 메뉴 생성 및 액션 추가

            menu_bar = self.menuBar()

            file_menu = menu_bar.addMenu("File")

            file_menu.addAction(action)

     

        def say_hello(self):

            QMessageBox.information(self, "Hello", "Hello, World!")

     

    app = QApplication(sys.argv)

    window = MainWindow()

    window.show()

    app.exec()

    ```

    이 예제에서 QMenuBar를 생성하고, QMenu를 추가한 다음, 해당 메뉴에 QAction을 추가했습니다.

     

    #### 상태 표시줄

    상태 표시줄은 애플리케이션의 하단에 위치하여 사용자에게 상태 메시지를 제공하는 영역입니다. QStatusBar 클래스를 사용하여 상태 표시줄을 생성할 수 있습니다.

     

    **QStatusBar 사용하기**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QStatusBar

     

    class MainWindow(QMainWindow):

        def __init__(self):

            super().__init__()

            self.setWindowTitle("QStatusBar Example")

     

            # 상태 표시줄 생성 및 설정

            status_bar = QStatusBar()

            self.setStatusBar(status_bar)

            status_bar.showMessage("Ready")

     

    app = QApplication(sys.argv)

    window = MainWindow()

    window.show()

    app.exec()

    ```

    이 예제에서 QStatusBar를 생성하고, 이를 메인 창에 설정한 다음, 메시지를 표시했습니다.

     

    #### 결론

    이 장에서는 PySide6에서 액션, 도구 모음, 메뉴 및 상태 표시줄을 사용하는 방법을 살펴보았습니다. 이러한 요소를 사용하면 사용자가 애플리케이션을 더 쉽게 탐색하고 사용할 수 있게 할 수 있습니다. 다음 장에서는 대화 상자를 사용하여 사용자와 상호 작용하는 방법을 알아보겠습니다.

    import sys

    from PySide6.QtCore import Qt
    from PySide6.QtWidgets import (
        QApplication,
        QMainWindow,
        QLabel,
        QToolBar,
    )

    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()
           
            self.setWindowTitle("My App")
           
            label = QLabel("Hello")
            label.setAlignment(Qt.AlignCenter)
           
            self.setCentralWidget(label)
           
            toolbar = QToolBar("My main Toolbar")
           
            self.addToolBar(toolbar)
           
        def onMyToolBarButtonClick(self, is_checked):
            print("click", is_checked)
           
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    app.exec()
    import sys

    from PySide6.QtCore import Qt
    from PySide6.QtGui import QAction
    from PySide6.QtWidgets import (
        QApplication,
        QMainWindow,
        QLabel,
        QToolBar,
    )

    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()
           
            self.setWindowTitle("My App")
           
            label = QLabel("Hello")
            label.setAlignment(Qt.AlignCenter)
           
            self.setCentralWidget(label)
           
            toolbar = QToolBar("My main toolbar")
            self.addToolBar(toolbar)
           
            button_action = QAction("Your button", self)
            button_action.setStatusTip("This is your button")
            button_action.triggered.connect(self.onMyToolBarButtonClick)
            toolbar.addAction(button_action)
           
           
        def onMyToolBarButtonClick(self, is_checked):
            print("click", is_checked)
           
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    app.exec()
           
           
    import sys

    from PySide6.QtCore import Qt
    from PySide6.QtGui import QAction
    from PySide6.QtWidgets import (
        QApplication,
        QMainWindow,
        QLabel,
        QToolBar,
        QStatusBar,
    )

    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()
           
            self.setWindowTitle("My App")
           
            label = QLabel("Hello")
            label.setAlignment(Qt.AlignCenter)
           
            self.setCentralWidget(label)
           
            toolbar = QToolBar("My main toolbar")
            self.addToolBar(toolbar)
           
            button_action = QAction("Your button", self)
            button_action.setStatusTip("This is your button")
            button_action.triggered.connect(self.onMyToolBarButtonClick)
            toolbar.addAction(button_action)
           
            self.setStatusBar(QStatusBar(self))
           
        def onMyToolBarButtonClick(self, is_checked):
            print("click", is_checked)
           
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    app.exec()
           
           
    import os
    import sys

    from PySide6.QtCore import QSize, Qt
    from PySide6.QtGui import QAction, QIcon
    from PySide6.QtWidgets import (
        QApplication,
        QMainWindow,
        QLabel,
        QToolBar,
        QStatusBar,
    )

    basedir = os.path.dirname(__file__)

    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()
           
            self.setWindowTitle("My App")
           
            label = QLabel("Hello")
            label.setAlignment(Qt.AlignCenter)
           
            self.setCentralWidget(label)
           
            toolbar = QToolBar("My main toolbar")
            toolbar.setIconSize(QSize(16,16))
            self.addToolBar(toolbar)
           
            button_action = QAction(
                QIcon(os.path.join(basedir, "m.jpg")),
                "Your button",
                self,
            )
            button_action.setStatusTip("This is your button")
            button_action.triggered.connect(self.onMyToolBarButtonClick)
            button_action.setCheckable(True)
            toolbar.addAction(button_action)
           
            self.setStatusBar(QStatusBar(self))
           
        def onMyToolBarButtonClick(self, is_checked):
            print("click", is_checked)
           
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    app.exec()
    import os
    import sys

    from PySide6.QtCore import QSize, Qt
    from PySide6.QtGui import QAction, QIcon, QKeySequence
    from PySide6.QtWidgets import (
        QApplication,
        QMainWindow,
        QCheckBox,
        QLabel,
        QStatusBar,
        QToolBar,
    )

    basedir = os.path.dirname(__file__)

    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()
           
            self.setWindowTitle("My App")
           
            label = QLabel("hello")
            label.setAlignment(Qt.AlignCenter)
            self.setCentralWidget(label)
           
            toolbar = QToolBar("My main toolbar")
            toolbar.setIconSize(QSize(16,16))
            self.addToolBar(toolbar)
           
            button_action = QAction(QIcon("m.jpg"),"&Your button", self )
            button_action.setStatusTip("This is your button")
            button_action.triggered.connect(self.onMyToolBarButtonClick)
            button_action.setCheckable(True)
            button_action.setShortcut(QKeySequence("Ctrl+p"))
            toolbar.addAction(button_action)
           
            toolbar.addSeparator()
           
            button_action2 = QAction(QIcon("b.jpg"), "Your button2", self)
            button_action2.setStatusTip("This is button2")
            button_action2.triggered.connect(self.onMyToolBarButtonClick)
            button_action2.setCheckable(True)
            toolbar.addAction(button_action2)
           
            toolbar.addWidget(QLabel("Hello"))
            toolbar.addWidget(QCheckBox())
           
            self.setStatusBar(QStatusBar(self))
           
            menu = self.menuBar()
            file_menu = menu.addMenu("&File")
            file_menu.addAction(button_action)
            file_menu.addSeparator()
            file_submenu = file_menu.addMenu("Submenu")
            file_submenu.addAction(button_action2)
           
        def onMyToolBarButtonClick(self, is_checked):
            print("click", is_checked)
           
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    app.exec()

           
           

     

    728x90

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

    PYSIDE6 창  (0) 2024.10.24
    PYSIDE6 대화상자  (1) 2024.10.24
    PYSIDE6 레이아웃  (0) 2024.10.22
    PYSIDE6 위젯  (0) 2024.10.21
    PYSIDE6 시그널과 슬롯  (0) 2024.10.20
Designed by Tistory.