PyQt - QStatusBar 控制元件



QMainWindow 物件在底部保留了一條水平條作為狀態列。它用於顯示永久或上下文狀態資訊。

狀態指示器有三種類型:

  • 臨時 - 短暫佔用大部分狀態列。例如,用於解釋工具提示文字或選單項。

  • 普通 - 佔用狀態列的一部分,可能被臨時訊息隱藏。例如,用於在文字處理器中顯示頁面和行號。

  • 永久 - 從不隱藏。用於重要的模式指示。例如,一些應用程式在狀態列中放置一個 Caps Lock 指示器。

QMainWindow 的狀態列可以透過 statusBar() 函式獲取。setStatusBar() 函式啟用它。

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

QStatusBar 類的成員方法

序號 方法及描述
1

addWidget()

在狀態列中新增給定的控制元件物件

2

addPermanentWidget()

在狀態列中永久新增給定的控制元件物件

3

showMessage()

在狀態列中顯示臨時訊息,持續指定的時間間隔

4

clearMessage()

移除任何正在顯示的臨時訊息

5

removeWidget()

從狀態列中移除指定的控制元件

示例

在下面的示例中,一個頂級 QMainWindow 具有一個選單欄和一個 QTextEdit 物件作為其中心控制元件。

視窗的狀態列如上所述被啟用。

選單的 triggered 訊號傳遞給 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 Widget Output
廣告

© . All rights reserved.