QMainWindowクラスは、メインアプリケーションウィンドウを表します。 これを使用すると、ステータスバー、ツールバー、メニューを備えたクラシックビューを作成できます。
ステータスバー
ステータスバーは、ステータス情報を表示するために使用されるウィジェットです。
#!/usr/bin/python
import sys
from PyQt4 import QtGui
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('statusbar')
self.statusBar().showMessage('Ready')
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
self.statusBar().showMessage('Ready')
ステータスバーを作成するには、QApplicationクラスのstatusBar()メソッドを呼び出します。 ShowMessage()は、ステータスバーにメッセージを表示します。
メニュー
メニューは、GUIアプリケーションの最も顕著な部分の1つです。 これは、さまざまなメニューにあるコマンドのグループです。 コンソールアプリケーションでは、すべてのシークレットコマンドを覚えておく必要がありますが、ここでは、論理的にグループ化されたほとんどのコマンドにアクセスできます。 これは、新しいアプリケーションを習得するのにかかる時間を短縮する、受け入れられている標準です。
#!/usr/bin/python
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('menubar')
exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
self.statusBar()
menubar = self.menuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
self.statusBar().showMessage('Ready')
最初に、QMainWindowクラスのmenuBar()メソッドを使用してメニューを作成します。 次に、addMenu()メソッドを使用して、[ファイル]メニュー項目を追加し、作成された項目にexitオブジェクトを接続します。
ツールバー
メニューには、アプリケーションで使用できるすべてのコマンドが組み合わされています。 ツールバーを使用すると、最も一般的に使用されるコマンドにすばやくアクセスできます。
#!/usr/bin/python
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('toolbar')
self.exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
self.exit.setShortcut('Ctrl+Q')
self.connect(self.exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(self.exit)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
self.exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
self.exit.setShortcut('Ctrl+Q')
GUIアプリケーションはコマンドによって制御され、これらのコマンドはメニュー、コンテキストメニュー、ツールバーから、またはホットキーを使用して起動できます。 PyQtはアクションの導入により開発を簡素化します。 アクションオブジェクトには、メニューテキスト、アイコン、ショートカット(キーボードショートカット)、ステータステキスト、「What's This?」テキスト、およびツールチップを含めることができます。 この例では、アイコン、ショートカット、およびツールチップを使用してアクションオブジェクトを定義します。
self.connect(self.exit, QtCore.SIGNAL('triggered()'),
QtCore.SLOT('close()'))
ここで、アクションオブジェクトのトリガーされた()信号を、事前定義されたclose()信号に接続します。
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(self.exit)
ツールバーを作成し、それにアクションオブジェクトを設定します。
一緒に組み合わせる
最後の例では、ウィンドウを作成し、その上にメニュー、ツールバー、ステータスバーを配置し、中央のウィジェットも追加します。
#!/usr/bin/python
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(350, 250)
self.setWindowTitle('mainwindow')
textEdit = QtGui.QTextEdit()
self.setCentralWidget(textEdit)
exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
self.statusBar()
menubar = self.menuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
toolbar = self.addToolBar('Exit')
toolbar.addAction(exit)
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(self.exit)
ここでは、QMainWindowの中心に設定されるQtextEditウィジェットを作成します。 中央のウィジェットがすべての空きスペースを占有します。