PyQt5 實現狀態欄永久顯示消息

前言:

課程設計打算用qt和python做一個上位機,現在的需求是要在狀態欄永久顯示串口號、波特率。狀態欄的自身的方法無法讓信息長久保留,但是我們可以為狀態欄永久添加小控件

QStatusBar添加刪除小控件的方法:

方法

描述

addPermanentWidget() 在狀態欄中永久添加給定的窗口小控件對象
removeWidget() 從狀態欄中移除指定的小控件

實例代碼如下:

import sys
from PyQt5.QtWidgets import *
 
class windows(QMainWindow):
  def __init__(self, parent=None):
    super(windows, self).__init__(parent)
    self.initUi()
 
  def initUi(self):
    self.resize(500, 500)
 
    self.status = self.statusBar()
    self.status.showMessage('實時更新的信息', 0) #狀態欄本身顯示的信息 第二個參數是信息停留的時間,單位是毫秒,默認是0(0表示在下一個操作來臨前一直顯示)
    self.comNum = QLabel('串口號:')
    self.baudNum = QLabel('波特率:')
 
    self.status.addPermanentWidget(self.comNum, stretch=0)
    self.status.addPermanentWidget(self.baudNum, stretch=0)
 
 
if __name__ == '__main__':
  app = QApplication(sys.argv)
  Win = windows()
  Win.show()
  sys.exit(app.exec_())

運行後的窗口:

補充:

self.status.addPermanentWidget(self.comNum, stretch=0)
self.status.addPermanentWidget(self.baudNum, stretch=0)
#這兩句的stretch是設置拉伸因子

如果把stretch作如下修改

self.status.addPermanentWidget(self.comNum, stretch=3)
self.status.addPermanentWidget(self.baudNum, stretch=1)
#這裡兩個控件會按3:1的比例放置在狀態欄裡

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: