KenShiro
KenShiro

Reputation: 45

setEnabled(True/False) -> QPushButton when multiple QLineEdit are not empty

I have a gui application with 3 QLineEdit and 2 QPushButton.

I want to put on 'True' the 'Button 1' when 'TEXT INPUT A' and 'TEXT INPUT B' are not empty, and the same on 'Button 2' if all 3 'TEXT INPUT' are not empty.

If all 3 'TEXT INPUT' have the text, buttons are 'True', if I delete for example the text in the 'TEXT INPUT C', the 'Button 2' return to "False".

Same for 'Button 1' if 'TEXT INPUT A' or 'TEXT INPUT B' return empty.

Any suggestions?

import PyQt4.QtGui as gui, PyQt4.QtCore as core

app = gui.QApplication([])
window = gui.QWidget()
window.resize(256, 0)
window.setWindowTitle('MY TITLE')
layout = gui.QVBoxLayout()


A_edit = gui.QLineEdit() 
A_title = gui.QLabel('TEXT INPUT A')
A_edit.setObjectName('TITLE_A')
layout.addWidget(A_title)
layout.addWidget(A_edit)

B_edit = gui.QLineEdit() 
B_title = gui.QLabel('TEXT INPUT B')
B_edit.setObjectName('TITLE_B')
layout.addWidget(B_title)
layout.addWidget(B_edit)

C_edit = gui.QLineEdit() 
C_title = gui.QLabel('TEXT INPUT C')
C_edit.setObjectName('TITLE_C')
layout.addWidget(C_title)
layout.addWidget(C_edit)

button_1 = gui.QPushButton('button 1')
button_2 = gui.QPushButton('button 2')

layout.addWidget(button_1)
layout.addWidget(button_2)
button_1.setEnabled(False)
button_2.setEnabled(False)

window.setLayout(layout)
window.show()

app.exec_()

Upvotes: 1

Views: 540

Answers (1)

Sebastian Amenabar
Sebastian Amenabar

Reputation: 91

you could connect the 3 lineedits to a function

A_edit.textChanged.connect(check_buttons)
B_edit.textChanged.connect(check_buttons)
C_edit.textChanged.connect(check_buttons)

And in the check_buttons function you check each lineEdit

check_buttons():
    a = A_edit.text()
    b = B_edit.text()
    c = C_edit.text()
    if a and b:
        button_1.setEnabled(True)
    else:
        button_1.setEnabled(False)
    if a and b and c:
        button_2.setEnabled(True)
    else:
        button_2.setEnabled(False)

Upvotes: 3

Related Questions