setEnabled(True / False) - >多个QLineEdit不为空时的QPushButton

时间:2015-12-01 22:05:45

标签: python

我有一个带有3个QLineEdit和2个QPushButton的gui应用程序。

我想穿上' True' '按钮1'当' TEXT INPUT A'和' TEXT INPUT B'不是空的,按钮2'如果所有3' TEXT INPUT'不是空的。

如果所有3' TEXT INPUT'如果我删除了例如' TEXT INPUT C'中按钮2''按钮2'回到"错误"。

同样的按钮1'如果' TEXT INPUT A'或者' TEXT INPUT B'返回空。

有什么建议吗?

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_()

1 个答案:

答案 0 :(得分:3)

你可以将3个lineedits连接到一个函数

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

在check_buttons函数中,检查每个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)