-
PYSIDE6 액션, 도구 모음, 메뉴PYTHON(파이썬)/PYSIDE6(GUI) 2024. 10. 23. 06:32728x90반응형
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 Qtfrom 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 Qtfrom PySide6.QtGui import QActionfrom 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 Qtfrom PySide6.QtGui import QActionfrom 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 osimport sys
from PySide6.QtCore import QSize, Qtfrom PySide6.QtGui import QAction, QIconfrom 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 osimport sys
from PySide6.QtCore import QSize, Qtfrom PySide6.QtGui import QAction, QIcon, QKeySequencefrom 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