2013-10-28 65 views
0

我在讀下面的教程:程序執行過程中的Python的Qt更新狀態欄

Events and Signals in PyQt4

和示例顯示狀態欄單擊按鈕時被更新,但是,我想知道是否或者不可以將其作爲通用函數(比如說)。因此,例如,我可以創建一個穿過string的函數,只要我調用此函數,statusBar就會更改爲經過解析的文本。我假設你必須使用connect,但我已經試過如下:

#in main have: 
self.connect(showMessage) 

def updateStatusBar(): 
    sender = self.sender() 
    self.statusBar().showMessage(sender.text() + 'Here'); 

然而,這是行不通的。任何人都可以告訴我一個替代方案嗎?

回答

1

嘗試獲取您想要觸發動作的對象發出的信號。這是一個最簡單的例子(只要QLineEdit中的文本發生變化,就更新狀態欄)。我希望它能夠滿足你的需求。

import sys 

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

class MainWindow(QMainWindow): 

    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 

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

     self.lineEdit = QLineEdit() 
     self.setCentralWidget(self.lineEdit) 

     self.lineEdit.textEdited.connect(self.updateStatusBar) 

    def updateStatusBar(self, string): 
     self.statusBar.showMessage(string) 


if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    main_window = MainWindow() 
    main_window.show() 
    sys.exit(app.exec_()) 

請參閱文檔以瞭解哪些信號是爲每個類預定義的信息,例如, http://qt-project.org/doc/qt-5.0/qtwidgets/qlineedit.html#signals

+0

這是回答您的問題嗎?如果沒有,請隨時提供更多細節。 – Henry