Pyqt-qstatusbar-widget

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

PyQt-QStatusBarウィジェット

QMainWindowオブジェクトは、*ステータスバー*として下部に水平バーを予約します。 永続的またはコンテキストのステータス情報を表示するために使用されます。

ステータスインジケータには3種類あります-

  • 一時-ステータスバーの大部分を簡単に占有します。 たとえば、ツールヒントのテキストまたはメニューエントリの説明に使用されます。
  • 通常-ステータスバーの一部を占め、一時的なメッセージによって非表示になる場合があります。 たとえば、ワードプロセッサでページ番号と行番号を表示するために使用されます。
  • パーマネント-決して隠されることはありません。 重要なモード表示に使用されます。 たとえば、一部のアプリケーションは、ステータスバーにCaps Lockインジケーターを配置します。

QMainWindowのステータスバーは、statusBar()関数によって取得されます。 setStatusBar()関数はそれをアクティブにします。

self.statusBar = QStatusBar()
self.setStatusBar(self.statusBar)

QStatusBarクラスのメソッド

Sr.No. Methods & Description
1

addWidget()

指定されたウィジェットオブジェクトをステータスバーに追加します

2

addPermanentWidget()

指定されたウィジェットオブジェクトをステータスバーに永続的に追加します

3

showMessage()

指定された時間間隔の間、ステータスバーに一時的なメッセージを表示します

4

clearMessage()

表示されている一時的なメッセージを削除します

5

removeWidget()

指定したウィジェットをステータスバーから削除します

次の例では、最上位のQMainWindowには、中央のウィジェットとしてメニューバーとQTextEditオブジェクトがあります。

前述のように、ウィンドウのステータスバーがアクティブになります。

メニューのトリガー信号は、processtrigger()スロット関数に渡されます。 「ショー」アクションがトリガーされると、ステータスバーに一時メッセージが表示されます-

if (q.text() == "show"):
   self.statusBar.showMessage(q.text()+" is clicked",2000)

メッセージは2000ミリ秒(2秒)後に消去されます。 「追加」アクションがトリガーされると、ボタンウィジェットが追加されます。

if q.text() == "add":
   self.statusBar.addWidget(self.b)

削除アクションは、ステータスバーからボタンを削除します。

if q.text() == "remove":
   self.statusBar.removeWidget(self.b)
   self.statusBar.show()

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

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

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

      bar = self.menuBar()
      file = bar.addMenu("File")
      file.addAction("show")
      file.addAction("add")
      file.addAction("remove")
      file.triggered[QAction].connect(self.processtrigger)
      self.setCentralWidget(QTextEdit())

      self.statusBar = QStatusBar()
      self.b = QPushButton("click here")
      self.setWindowTitle("QStatusBar Example")
      self.setStatusBar(self.statusBar)

   def processtrigger(self,q):

      if (q.text() == "show"):
         self.statusBar.showMessage(q.text()+" is clicked",2000)

      if q.text() == "add":
         self.statusBar.addWidget(self.b)

      if q.text() == "remove":
         self.statusBar.removeWidget(self.b)
         self.statusBar.show()

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

if __name__ == '__main__':
   main()

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

QStatusBarウィジェットの出力