Pyqt-qmenubar-qmenu-qaction-widgets
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()
上記のコードは、次の出力を生成します-