使用按钮清除所有输入

时间:2014-09-02 12:31:39

标签: pyside qlineedit qpushbutton

我使用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_())

我不知道如何编写按钮功能。如果有人可以提供帮助,请提前谢谢。

1 个答案:

答案 0 :(得分: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()

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

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)