0

我正在阅读以下教程:

PyQt4 中的事件和信号

该示例显示了单击按钮时正在更新的状态栏,但是,我想知道是否可以将其作为通用函数(例如)执行。例如,我可以创建一个通过通过 astring并且每当我调用此函数时,statusBar 都会更改为解析过的文本。我假设您必须使用connect,但我尝试了以下方法:

#in main have:
self.connect(showMessage)

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

但是,这不起作用。谁能告诉我这样做的替代方法?

4

1 回答 1

2

尝试抓住要触发动作的对象发出的信号。这是一个最小的示例(每当 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

于 2013-10-29T16:01:03.550 回答