给QLineEdit

时间:2016-09-18 00:34:01

标签: python qt pyqt pyqt4

我想为QLineEdit提供索引。

我有这段代码。

    from PyQt4 import QtGui, QtCore
import sys

class Main(QtGui.QMainWindow):
    def __init__(self, parent = None):
        super(Main, self).__init__(parent)

        # main button
        self.addButton = QtGui.QPushButton('button to add other widgets')
        self.addButton.clicked.connect(self.addWidget)
        self.savebutton = QtGui.QPushButton('Save')

        # scroll area widget contents - layout
        self.scrollLayout = QtGui.QFormLayout()

        # scroll area widget contents
        self.scrollWidget = QtGui.QWidget()
        self.scrollWidget.setLayout(self.scrollLayout)

        # scroll area
        self.scrollArea = QtGui.QScrollArea()
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setWidget(self.scrollWidget)

        # main layout
        self.mainLayout = QtGui.QVBoxLayout()

        # add all main to the main vLayout
        self.mainLayout.addWidget(self.addButton)
        self.mainLayout.addWidget(self.scrollArea)
        self.mainLayout.addWidget(self.savebutton)
        # central widget
        self.centralWidget = QtGui.QWidget()
        self.centralWidget.setLayout(self.mainLayout)

        # set central widget
        self.setCentralWidget(self.centralWidget)

    def addWidget(self):
        self.scrollLayout.addRow(Test())


class Test(QtGui.QWidget):
  def __init__( self, parent=None):
      super(Test, self).__init__(parent)
      self.kod = QtGui.QLineEdit()


      layout = QtGui.QHBoxLayout()
      layout.addWidget(self.kod)
      self.setLayout(layout)



app = QtGui.QApplication(sys.argv)
myWidget = Main()
myWidget.show()
app.exec_()

当我点击保存按钮时,savebutton只发送最后一个QLineEdit小部件。 image is here

就像在这张照片中一样,我想要self.kod [0] .text()=" aaaa" self.kod 1 =" BBBB" self.kod [2] =" CCCC"它会像这样。 kod [x]这个x数字会自动增加,而我点击添加widget按钮。或者它可以是这样的:kod1,kod2,kod3,kodx。没关系,我想与其他人区别开来,并从中获取文字。

1 个答案:

答案 0 :(得分:0)

你可以在Main类中设置一个列表,比如这个['aaa','bbb','ccc'], 并设置var = 0。

class Main(QtGui.QMainWindow):
    def __init__(self, parent = None):
        super(Main, self).__init__(parent)
        #
        self.lineText = ['aaa', 'bbb', 'ccc']
        self.var = 0
        ...


    def addWidget(self):
        self.scrollLayout.addRow(Test(self, self.var))
        self.var += 1

然后给Test class一个arg,

class Test(QtGui.QWidget):
  def __init__( self, parent=None, count):
      super(Test, self).__init__(parent)
      #
      self.parent = parent
      self.kod = QtGui.QLineEdit()
      #
      self.kod.setText(self.parent.lineText[count])

---

class Main(QtGui.QMainWindow):
    def __init__(self, parent = None):
        super(Main, self).__init__(parent)

        self.kod = []
        ...
    def addWidget(self):
        temp = Test()
        self.kod.append(temp)
        self.scrollLayout.addRow(temp)

并打印(self.kod)

[<__main__.Test object at 0x00000000032EEC18>, <__main__.Test object at 0x00000000032EEDC8>, <__main__.Test object at 0x00000000032EEF78>]