Maya PySide2 / PySide チュートリアル 初学編 ⑤ – メインアプリケーションを作ろう
このチュートリアルはメインアプリケーションで使用するメニューとツールバー、ステータスバーについて学んでいきます
メニューとは、メニューバーに配置されたコマンド群のことで、ツールバーには、アプリケーションでよく使うコマンドのボタンがあります
ステータスバーは、ステータス情報を表示するためのウィジェット
import sys try: from PySide2.QtWidgets import * from PySide2.QtCore import * except ImportError: from PySide.QtGui import * from PySide.QtCore import * class Example(QMainWindow): def __init__(self, parent=None, *args, **kwargs): super(Example, self).__init__(parent, *args, **kwargs) self.initUI() def initUI(self): self.setGeometry(500, 300, 400, 270) self.setWindowTitle("Menubar & ToolBar & Statusbar") openMenu = QMenu("Open") openMenu.addAction("help") exitAction = QAction("Exit", self) exitAction.setShortcut("Ctrl+G") exitAction.triggered.connect(self.close) menuBar = self.menuBar() fileMenu = menuBar.addMenu("File") fileMenu.addMenu(openMenu) fileMenu.addAction(exitAction) self.toolbar = self.addToolBar("Exit") self.toolbar.addAction(exitAction) self.statusBar().showMessage("Ready") def main(): app = QApplication.instance() ex = Example() ex.show() sys.exit() app.exec_() main()
メニューとツールバー、ステータスバーを作成するにはQMainWindowを使います
class Example(QMainWindow): def __init__(self, parent=None, *args, **kwargs): super(Example, self).__init__(parent, *args, **kwargs)
Maya PySide2 / PySide チュートリアル 初学編 ④では、QWidgetを使用していましたがなぜ、このチュートリアルではQMainWindowを使用しているのでしょうか?
それはQMainWindowがその名の通りメインウィンドウを提供しており、ステータスバー、ツールバー、メニューバーを備えた古典的なアプリケーションを作ることが簡単にできます
そして、QWidgetなどは通常このQMainWindowに埋め込んで使用していくタイプのインターフェイスになります
PySideのUIを構築する際には基本的にはQMainWindowを用意して、そのQMainWindowにQWidgetやQPushButtonなどを埋め込んで一つのUIを作っていくという流れがベーシックな形になるためこのチュートリアルではQMainWindowを使用しています
(初学編のあとの初心者編ではQMainWindowにインターフェイスつまりウィジェットを埋め込んでいくことを実践的に行っていきますので詳しくはその時に記述できればと考えています)
openMenu = QMenu("Open") openMenu.addAction("help")
QMenu(const QString &title, QWidget *parent = nullptr)はアクションアイテムのリストで構成されており、addAction()、addActions()、insertAction()関数を使用することでアクションの追加ができます
exitAction = QAction("Exit", self) exitAction.setShortcut("Ctrl+G") exitAction.triggered.connect(self.close)
QPushButtonやコールバックを書かなくともQAction(const QIcon &icon, const QString &text, QObject *parent = nullptr)を作ることで複数のメニューやツールバーをまたいで使用することができます
上の例ではtriggered.connect
でアクションがトリガーされたときにself.closeを実行できようにしています
また、Ctrl+Gショートカットを設定しているのでこの例を実行している際はCtrl+Gでwindowを閉じることができます
menuBar = self.menuBar() fileMenu = menuBar.addMenu("File") fileMenu.addMenu(openMenu) fileMenu.addAction(exitAction)
self.menuBar()
はself、つまりQMainWindowのメニューバーを作成し、QMenuBarを返しています
そしてaddMenu
でメニューをメニューバーに追加し、そのメニューに上のほうで宣言したopenMenu
とexitAction
をそれぞれaddMenu
とaddAction
で追加しています
self.toolbar = self.addToolBar("Exit") self.toolbar.addAction(exitAction)
self.addToolBar()
はself、つまりQMainWindowのは最初の呼び出しでツールバーを作成し、QToolBarを返しています
そしてそのツールバーにaddAction
でexitAction
をアクションを追加しています
self.statusBar().showMessage("Ready")
self.statusBar()
は最初の呼び出しでステータスバーを作成し、QStatusBarを返しています
self、つまりQMainWindowのステータスバーになります
showMessage()は、ステータスバーにメッセージを表示しています
void QStatusBar::showMessage(const QString &message, int timeout = 0)
Maya PySide2 / PySide チュートリアルのこのパートでは、メニュー、ツールバー、ステータスバー、メインアプリケーションのウィンドウを扱いました
次はMaya PySide2 / PySide チュートリアル 初学編 ⑥
前はMaya PySide2 / PySide チュートリアル 初学編 ④
ディスカッション
コメント一覧
まだ、コメントがありません