2017-08-16 51 views
-1

我有一个QLineEdit对象,我想按下输入按钮时做一些与它的文本。我有连接returnPressed信号没有问题,但我不能做这样的事情,例如:PyQt5修改内置信号

lineedit = QLineEdit() 
lineedit.returnPressed.connect(test) 

@pyqtSlot(str) 
test(data): 
    print("enter pressed", data) 

这只是给出了错误:

TypeError: test() missing 1 required positional argument: 'data'

我想要的文字内容也由信号发出。有没有一种方法来创建于returnPressed发出一个新的信号,而且还放出了QLineEdit的文本内容?

注意:我注意到,这确实在某些情况下工作。例如,对于QRadioButton,所述toggled信号将发射TrueFalse如果QRadioButton处于开或关状态点击时。

回答

0

行为可以用自定义类实现:

class QLineEditX(QLineEdit): 
    returnPressedX = pyqtSignal(str) 
    def __init__(self): 
     super().__init__() 
     self.returnPressed.connect(self.on_return_pressed) 

    def on_return_pressed(self): 
     self.returnPressedX.emit(self.text()) 

这是一个有点笨重,但。也许有更好的方法?

+0

我没有看到这一点。为什么不直接连接到'returnPressed'并执行'print(“enter pressed”,lineedit.text())'? – ekhumoro

+0

在我的情况,我有一个计划(program.py),以导入QT主窗口(mainwindow.py)。控件是在mainwindow.py中动态创建的,但需要将其信号插入到program.py中的函数中。我无法访问program.py中的lineedit对象。 – twester