Pyqt-qmenubar-qmenu-qaction-widgets

提供:Dev Guides
移動先:案内検索

QMenuBar、QMenuおよびQActionウィジェット

QMainWindowオブジェクトのタイトルバーのすぐ下にある水平の QMenuBar は、QMenuオブジェクトを表示するために予約されています。

*QMenu* クラスは、メニューバーに追加できるウィジェットを提供します。 また、コンテキストメニューとポップアップメニューの作成にも使用されます。 各QMenuオブジェクトには、1つ以上の *QAction* オブジェクトまたはカスケードQMenuオブジェクトを含めることができます。

ポップアップメニューを作成するために、PyQt APIはcreatePopupMenu()関数を提供します。 menuBar()関数は、メインウィンドウのQMenuBarオブジェクトを返します。 addMenu()関数を使用すると、メニューをバーに追加できます。 次に、アクションはaddAction()メソッドによってメニューに追加されます。

次の表に、メニューシステムの設計に使用される重要な方法の一部を示します。

以下は、QMenuで最も一般的に使用されるメソッドです。

Sr.No. Methods & Description
1

menuBar()

メインウィンドウのQMenuBarオブジェクトを返します

2

addMenu()

新しいQMenuオブジェクトをメニューバーに追加します

3

addAction()

テキストまたはアイコンで構成されるQMenuウィジェットにアクションボタンを追加します

4

setEnabled()

アクションボタンの状態を有効/無効に設定します

5

addSeperator()

メニューに区切り線を追加します

6

Clear()

メニュー/メニューバーの内容を削除します

7

setShortcut()

キーボードショートカットをアクションボタンに関連付けます

8

setText()

アクションボタンにテキストを割り当てます

9

setTitle()

QMenuウィジェットのタイトルを設定します

10

text()

QActionオブジェクトに関連付けられたテキストを取得します

11

title()

QMenuオブジェクトに関連付けられたテキストを取得します

QMenuオブジェクトは、QActionボタンがクリックされるたびにtrigger()シグナルを発します。 クリックされたQActionオブジェクトへの参照は、接続されたスロット関数に渡されます。

この例では、最初に最上位ウィンドウのQMenuBarオブジェクト(QMainWindowオブジェクトでなければなりません)へのすべての参照が保存されます。

bar = self.menuBar()

ファイルメニューは、addMenu()メソッドによってメニューバーに追加されます。

file = bar.addMenu("File")

メニューのアクションボタンは、文字列またはQActionオブジェクトです。

file.addAction("New")
save = QAction("Save",self)
save.setShortcut("Ctrl+S")
file.addAction(save)

サブメニューがトップレベルメニューに追加されます。

edit = file.addMenu("Edit")
edit.addAction("copy")
edit.addAction("paste")

ファイルメニューから発せられるtriggered()シグナルはprocesstrigger()メソッドに接続され、シグナルを発生させるQActionオブジェクトを受け取ります。

file.triggered[QAction].connect(self.processtrigger)

完全なコードは次のとおりです-

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class menudemo(QMainWindow):
   def __init__(self, parent = None):
      super(menudemo, self).__init__(parent)

      layout = QHBoxLayout()
      bar = self.menuBar()
      file = bar.addMenu("File")
      file.addAction("New")

      save = QAction("Save",self)
      save.setShortcut("Ctrl+S")
      file.addAction(save)

      edit = file.addMenu("Edit")
      edit.addAction("copy")
      edit.addAction("paste")

      quit = QAction("Quit",self)
      file.addAction(quit)
      file.triggered[QAction].connect(self.processtrigger)
      self.setLayout(layout)
      self.setWindowTitle("menu demo")

   def processtrigger(self,q):
      print q.text()+" is triggered"

def main():
   app = QApplication(sys.argv)
   ex = menudemo()
   ex.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

上記のコードは、次の出力を生成します-

QMenuBar、QMenu、およびQActionウィジェットの出力