PyQt5: メニューとツールバー

1. メインウィンドウ

QMainWindowメイン ウィンドウの機能を提供し、それを使用していくつかの単純なステータス バー、ツールバー、メニュー バーを作成します。
メインウィンドウは以下のウィンドウの総称であり、チュートリアルは以下となります。

2. ステータスバー

ステータス バーは、アプリケーションのステータス情報を表示するために使用されるコンポーネントです。

self.statusBar().showMessage('Ready')ステータスバーはQMainWindowによって作成されました。statusBar()ステータスバーを作成するメソッド。最初の呼び出しはステータス バーを作成し、2 番目の呼び出しはステータス バー オブジェクトを返します。showMessage()メソッドはステータス バーにメッセージを表示します。

ここに画像の説明を挿入します

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys

from PyQt5.QtWidgets import QMainWindow, QApplication


class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.statusBar().showMessage('Ready')

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Statusbar')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

3. メニューバー

メニューバーは非常によく使われます。これはコマンドのコレクションです (Mac OS でのステータス バーの表示は異なります。最も類似した外観を得るには、ステートメントの行を追加できますmenubar.setNativeMenuBar(False))。

QActionこれは、メニュー バー、ツールバー、またはショートカット キーのアクションの組み合わせです。上記の 3 行のうち、最初の 2 行はアイコン、終了ラベル、ショートカット キーの組み合わせを作成し、これらはすべてアクションを実行します。3 行目はステータス バーを作成し、マウスをメニューの上に置いたときに表示できます。バー: 現在のステータスを表示します。

  • exitAct = QAction(QIcon('./Resources/images/icon.ico'), '&Exit', self)アイコン、テキスト
  • exitAct.setShortcut('Ctrl+Q')ショートカットキー
  • exitAct.setStatusTip('退出应用')ステータスバープロンプト
  • exitAct.triggered.connect(qApp.quit)この指定されたアクションが実行されると、イベントがトリガーされます。このイベントQApplication的quit()はアクションに関連付けられているため、このアクションによりアプリケーションが終了します。


    self.menuBar()メニューバーを作成します。ここでは、メニュー バーが作成され、addMenu() を使用してファイル メニューが追加され、クリックしてアプリケーションを終了するイベントが addAction() に関連付けられています。
  • fileMenu = menubar.addMenu('&File')ファイルメニューを追加しました
  • fileMenu.addAction(exitAct)クリックしてアプリケーションを終了するイベントに関連付けられますexitAct

ここに画像の説明を挿入します

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication, QMenu
from PyQt5.QtGui import QIcon


class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('菜单栏')
        icon = QIcon(":/images/logo")
        self.setWindowIcon(icon)
        self.setGeometry(300, 300, 300, 200)
        self.initUI()
        self.show()

    def initUI(self):
        exitAct = QAction(QIcon('./Resources/images/icon.ico'), '&Exit', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.setStatusTip('退出应用')
        exitAct.triggered.connect(qApp.quit)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        newMenu = menubar.addMenu('新建')

        fileMenu.addAction(exitAct)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

3.1 サブメニュー

サブメニューは、メニュー内にネストされた 2 番目または 3 番目のレベルのメニューです。

ここに画像の説明を挿入します

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication, QMenu
from PyQt5.QtGui import QIcon


class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('子单栏')
        icon = QIcon("./Resources/images/icon.ico")
        self.setWindowIcon(icon)
        self.setGeometry(300, 300, 300, 200)
        self.initUI()
        self.show()

    def initUI(self):
        exitAct = QAction(QIcon('./Resources/images/icon.ico'), '&Exit', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.setStatusTip('退出应用')
        exitAct.triggered.connect(qApp.quit)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')

        newMenu = QMenu('新建', self)

        impMenu = QMenu('Import', self)
        impAct = QAction('Import mail', self)
        impMenu.addAction(impAct)

        fileMenu.addMenu(newMenu)
        fileMenu.addMenu(impMenu)

        fileMenu.addAction(exitAct)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

3.2 メニューの確認

  • viewStatAct = QAction('View statusbar', self, checkable=True)オプションを含むcheckable選択可能なメニューを作成します。
  • viewStatAct.setStatusTip('View statusbar')ステータスバープロンプト
  • viewStatAct.setChecked(True)メニューを選択
  • viewStatAct.triggered.connect(self.toggleMenu)この指定されたアクションが実行されると、イベントがトリガーされますself.toggleMenu
  • イベントself.toggleMenu中のself.statusbar.show()、self.statusbar.hide()ステータスバープロンプトの表示/非表示
    ここに画像の説明を挿入します
import sys

from PyQt5.QtWidgets import QApplication, QAction, QMainWindow


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.statusbar = self.statusBar()
        self.statusbar.showMessage('Ready')

        menubar = self.menuBar()
        viewMenu = menubar.addMenu('View')

        viewStatAct = QAction('View statusbar', self, checkable=True)
        viewStatAct.setStatusTip('View statusbar')
        viewStatAct.setChecked(True)
        viewStatAct.triggered.connect(self.toggleMenu)

        viewMenu.addAction(viewStatAct)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Check menu')
        self.show()

    def toggleMenu(self, state):

        if state:
            self.statusbar.show()
        else:
            self.statusbar.hide()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

3.3 右クリックメニュー

右クリックメニューはポップアップボックスとも呼ばれ、アプリケーション上でマウスの右ボタンをクリックすると表示され、特定の場面で表示されるコマンド群です。たとえば、Opera ブラウザでは、Web ページを右クリックしてメニューを更新したり、ページのソース コードに戻ったり、表示したりできます。ツールバーを右クリックすると、ツールバーを管理するための別のメニューが表示されます。

  • contextMenuEvent()このメニューを実装するにはメソッドを使用します
  • action = cmenu.exec_(self.mapToGlobal(event.pos()))使用exec_()状況表示メニュー。マウスの右ボタンのイベント オブジェクトから現在の座標を取得します。mapToGlobal()このメソッドは、現在のコンポーネントの相対座標をウィンドウの絶対座標に変換します。
  • if action == quitAct:右クリックメニューでイベントが発生した場合quitAct、メニューを閉じる動作を実行しますqApp.quit()

ここに画像の説明を挿入します

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMainWindow, qApp, QMenu, QApplication


class Example(QMainWindow):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('右键菜单')
        icon = QIcon('./Resources/images/icon.ico')
        self.setWindowIcon(icon)
        self.show()

    def contextMenuEvent(self, event):
        cmenu = QMenu(self)

        newAct = cmenu.addAction("New")
        opnAct = cmenu.addAction("Open")
        quitAct = cmenu.addAction("Quit")
        action = cmenu.exec_(self.mapToGlobal(event.pos()))

        if action == quitAct:
            qApp.quit()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

4. ツールバー

メニュー バーにはすべてのコマンドが含まれており、ツールバーにはよく使用されるコマンドが集められています。

  • self.toolbar = self.addToolBar('Exit')ツールバーの作成
  • self.toolbar.addAction(exitAct)アクションオブジェクトをツールバーに追加する

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_23452385/article/details/131878182