본문 바로가기
PYTHON(파이썬)/PYSIDE6(GUI)

PYSIDE6 액션, 도구 모음, 메뉴

by eplus 2024. 10. 23.

 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