2015-12-01 99 views
1

我有一個gui應用程序與3 QLineEdit和2 QPushButton。setEnabled(True/False) - > QPushButton當多個QLineEdit非空

當'TEXT INPUT A'和'TEXT INPUT B'不是空的時,我想要'真''按鈕1',如果所有3'TEXT INPUT'都不是'按鈕2'空。

如果所有3'TEXT INPUT'都有文本,按鈕是'True',如果我刪除了例如'TEXT INPUT C'中的文本,'Button 2'返回到「False」。

如果'TEXT INPUT A'或'TEXT INPUT B'返回空,'Button 1'相同。

有什麼建議嗎?

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

回答

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)