2017-08-16 55 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