2014-09-02 3 views
-1

for 루프를 사용하여 여러 개의 QLineEdits를 만들고 모든 QLineEdits에 쓰여진 모든 것을 지울 수있는 버튼을 만듭니다. 모든 QLine에 무언가를 입력하고 버튼을 클릭하면 모든 행을 지울 수 있습니다. 내 질문은 어떻게 이런 버튼 기능을 작성하는 것입니다.버튼으로 모든 입력 지우기

내 단순화 된 버전 코드입니다.

from PySide import QtGui 
from PySide import QtCore 
from PySide.QtCore import Signal as pyqtSignal 
from PySide.QtCore import Slot as pyqtSlot 
import sys 

class example(QtGui.QWidget): 
    def __init__(self, parent= None): 
     super(example, self).__init__() 

     grid = QtGui.QGridLayout() 
     grid.setSpacing(10) 

     self.widget = QtGui.QWidget() 

     # set the widget as parent of its own layout 
     self.layout = QtGui.QGridLayout(self.widget) 

     for i in range(5): 
      line = QtGui.QLineEdit() 
      self.layout.addWidget(line,i,0) 

     btn = QtGui.QPushButton("Clear All") 
     self.layout.addWidget(btn,i+1,0) 
     btn.clicked.connect(self.all_clear) 

     self.scroll = QtGui.QScrollArea() 
     # need this so that scrollarea handles resizing 
     self.scroll.setWidgetResizable(True) 
     # these two lines may not be needed now 
     self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) 
     self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 

     self.scroll.setWidget(self.widget) 

     grid.addWidget(self.scroll, 3, 0) 
     self.setLayout(grid) 

    def all_clear(self): 
     pass 





if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 

    dialog = example() 
    dialog.show() 
    sys.exit(app.exec_()) 

버튼 기능을 작성하는 방법을 알지 못합니다. 누구든지 도울 수 있다면 미리 감사드립니다.

+0

OLineEdit에 대한 참조를 목록에 저장하고 해당 목록의 각 줄 편집에 대한 단추 클릭 호출 지우기 메서드 본문에 저장할 수 있습니다. – Pratham

+0

@Pratham, 정말 고마워요. 목록에 모든 기본값 (예 : 비어 있음)을 저장할 수 있다는 의미입니까? 그리고 지우기 단추를 누른 후에는 값이 기본값으로 설정됩니까? 가능한 경우 샘플 코드를 보여 주시겠습니까? – EricBkc

답변

1

@Pratham가 언급 한 바와 같이, 목록에있는 각 QLineEdit를 저장 :

self.edits = [] 
for i in range(5): 
    line = QtGui.QLineEdit() 
    self.layout.addWidget(line,i,0) 
    self.edits.append(line) 

하고 각각에 all_clear() 전화 clear()이 다음 clear() 방법을 사용하므로, 또한 슬롯

def all_clear(self): 
    for edit in self.edits: 
     edit.clear() 

입니다

clicked() 신호를 연결하여 새로운 방법을 정의하지 않고도 처리 할 수 ​​있습니다.

btn = QtGui.QPushButton("Clear All") 
self.layout.addWidget(btn,i+1,0) 

for i in range(5): 
    line = QtGui.QLineEdit() 
    self.layout.addWidget(line,i,0) 
    btn.clicked.connect(line.clear) 
+0

감사합니다. 작동합니다! – EricBkc