Python PyQt5-按下按钮时无法向窗体添加更多输入

Python PyQt5-按下按钮时无法向窗体添加更多输入,python,pyqt5,Python,Pyqt5,我在PyQt5中有一个表单,并添加了一些QLineEdits字段 当用户单击QPushButton时,我想以编程方式将QLineEdits字段添加到该表单,但当我运行我的应用程序并单击按钮时,我的应用程序不会向表单添加任何内容,也不会出现任何错误 那么,我该如何解决这个问题呢? 这是我的代码: from PyQt5 import QtCore, QtGui, QtWidgets class Ui_AnonForm(object): def setupUi(self, AnonForm):

我在
PyQt5
中有一个表单,并添加了一些
QLineEdits
字段

当用户单击
QPushButton
时,我想以编程方式将
QLineEdits
字段添加到该表单,但当我运行我的应用程序并单击按钮时,我的应用程序不会向表单添加任何内容,也不会出现任何错误

那么,我该如何解决这个问题呢? 这是我的代码:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_AnonForm(object):
   def setupUi(self, AnonForm):
      AnonForm.setObjectName("AnonForm")
      AnonForm.resize(500, 410)

      font = QtGui.QFont()
      font.setBold(True)
      font.setWeight(75)

      self.AnonTxt1 = QtWidgets.QLabel(AnonForm)
      self.AnonTxt1.setGeometry(QtCore.QRect(20, 10, 60, 20))
      self.AnonTxt1.setFont(font)
      self.AnonTxt1.setTextFormat(QtCore.Qt.RichText)
      self.AnonTxt1.setAlignment(QtCore.Qt.AlignCenter)
      self.AnonTxt1.setObjectName("AnonTxt1")

      self.AnonGroups = QtWidgets.QLineEdit(AnonForm)
      self.AnonGroups.setGeometry(QtCore.QRect(20, 30, 60, 20))
      self.AnonGroups.setFont(font)
      self.AnonGroups.setMaxLength(6)
      self.AnonGroups.setAlignment(QtCore.Qt.AlignCenter)
      self.AnonGroups.setObjectName("AnonGroups")

      self.AnonGo = QtWidgets.QPushButton(AnonForm)
      self.AnonGo.setEnabled(False)
      self.AnonGo.setGeometry(QtCore.QRect(400, 26, 80, 28))
      self.AnonGo.setFont(font)
      self.AnonGo.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
      self.AnonGo.setObjectName("AnonGo")

      self.retranslateUi(AnonForm)
      QtCore.QMetaObject.connectSlotsByName(AnonForm)

      self.AnonGroups.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp('^[0-9]+$')))
      self.AnonGroups.textChanged.connect(self.AnonOnpercentInputChg)
      self.AnonGo.clicked.connect(lambda: self.AnonGoSim('AnonForm'))

   def AnonGoSim(self, name):
      _translate = QtCore.QCoreApplication.translate
      AnonForm.setWindowTitle(_translate(name, "Change Me - Anoujaa SAS"))

      font = QtGui.QFont()
      font.setBold(True)
      font.setWeight(75)

      self.AnonGroupsLui = QtWidgets.QLineEdit(AnonForm)
      self.AnonGroupsLui.setGeometry(QtCore.QRect(40, 60, 80, 40))
      self.AnonGroupsLui.setFont(font)
      self.AnonGroupsLui.setMaxLength(6)
      self.AnonGroupsLui.setAlignment(QtCore.Qt.AlignCenter)
      self.AnonGroupsLui.setObjectName("AnonGroupsLui")

   def AnonOnpercentInputChg(self, text):
      if text:
         self.AnonGo.setEnabled(True)
      else:
         self.AnonGo.setEnabled(False)

   def retranslateUi(self, AnonForm):
      _translate = QtCore.QCoreApplication.translate
      AnonForm.setWindowTitle(_translate("AnonForm", "King - Anoujaa SAS"))
      self.AnonTxt1.setText(_translate("AnonForm", "Grupos"))
      self.AnonGo.setText(_translate("AnonForm", "Go!"))

if __name__ == "__main__":
   import sys
   app = QtWidgets.QApplication(sys.argv)
   AnonForm = QtWidgets.QWidget()
   ui = Ui_AnonForm()
   ui.setupUi(AnonForm)
   AnonForm.show()
   sys.exit(app.exec_())

这是一个粗略的实现,我知道你正在尝试做什么。您需要添加一个布局,以便添加QLineEdit。QLineEdit也是一个小部件

from PyQt5.QtWidgets import *

class Form(QMainWindow):

x = 1
def __init__(self):
    super(Form, self).__init__()

    self.setUI()

def setUI(self):
    self.lineEdit = QLineEdit()
    self.pushButton = QPushButton("Go")

    self.layout = QGridLayout()
    self.layout.addWidget(self.lineEdit,0,0)
    self.layout.addWidget(self.pushButton,0,1)

    self.main_widget = QWidget()
    self.main_widget.setLayout(self.layout)
    self.setCentralWidget(self.main_widget)

    self.pushButton.clicked.connect(self.addLineEdit)

def addLineEdit(self):

    newLineEdit = QLineEdit()
    self.layout.addWidget(newLineEdit,Form.x,0)
    Form.x += 1

if __name__ == "__main__":
   import sys
   app = QApplication(sys.argv)
   form = Form()
   form.show()
   sys.exit(app.exec_())

这是一个粗略的实现,我知道你正在尝试做什么。您需要添加一个布局,以便添加QLineEdit。QLineEdit也是一个小部件

from PyQt5.QtWidgets import *

class Form(QMainWindow):

x = 1
def __init__(self):
    super(Form, self).__init__()

    self.setUI()

def setUI(self):
    self.lineEdit = QLineEdit()
    self.pushButton = QPushButton("Go")

    self.layout = QGridLayout()
    self.layout.addWidget(self.lineEdit,0,0)
    self.layout.addWidget(self.pushButton,0,1)

    self.main_widget = QWidget()
    self.main_widget.setLayout(self.layout)
    self.setCentralWidget(self.main_widget)

    self.pushButton.clicked.connect(self.addLineEdit)

def addLineEdit(self):

    newLineEdit = QLineEdit()
    self.layout.addWidget(newLineEdit,Form.x,0)
    Form.x += 1

if __name__ == "__main__":
   import sys
   app = QApplication(sys.argv)
   form = Form()
   form.show()
   sys.exit(app.exec_())

每次单击按钮时,需要创建一个新行编辑和标签,然后为每个按钮指定一个唯一的objectname

导入系统 从PyQt5.QtWidgets导入QMainWindow、QApplication、QWidget、QPushButton、QAction、QLineEdit、QMessageBox、QLabel 从PyQt5.QtGui导入QIcon 从PyQt5.QtCore导入pyqtlot 类应用程序(QMainWindow): 定义初始化(自): super()。\uuuu init\uuuuu() self.title='Sample Dynamic LineEdit' self.left=10 self.top=10 自宽=400 自身高度=1000 self.i=40 self.j=80 self.counter=1 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left、self.top、self.width、self.height) #创建文本框 #self.textbox=QLineEdit(self) #self.textbox.move(20,20) #self.textbox.resize(280,40) #在窗口中创建一个按钮 self.button=QPushButton('添加行编辑',self) #单击“连接”按钮即可运行 self.button.clicked.connect(self.on_click) self.show() @pyqtSlot() 单击时的def(自身): #这将在每次单击按钮时创建一个新字段和标签 self.textbox=QLineEdit(self) self.label=QLabel(self) self.label.setText(str(self.counter)) self.label.move(5,self.i) self.button.move(20,self.j) self.textbox.move(20,self.i) self.textbox.resize(280,40) #动态对象名称 self.textbox.setObjectName(“text”+str(self.counter)) self.textbox.show() self.label.show() 自我保护i+=40 自我保护j+=40 self.counter+=1 打印(self.textbox.objectName()) 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': app=QApplication(sys.argv) ex=App() sys.exit(app.exec_())
每次单击按钮时,您需要创建一个新行编辑和标签,然后为每个行指定一个唯一的objectname

导入系统 从PyQt5.QtWidgets导入QMainWindow、QApplication、QWidget、QPushButton、QAction、QLineEdit、QMessageBox、QLabel 从PyQt5.QtGui导入QIcon 从PyQt5.QtCore导入pyqtlot 类应用程序(QMainWindow): 定义初始化(自): super()。\uuuu init\uuuuu() self.title='Sample Dynamic LineEdit' self.left=10 self.top=10 自宽=400 自身高度=1000 self.i=40 self.j=80 self.counter=1 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left、self.top、self.width、self.height) #创建文本框 #self.textbox=QLineEdit(self) #self.textbox.move(20,20) #self.textbox.resize(280,40) #在窗口中创建一个按钮 self.button=QPushButton('添加行编辑',self) #单击“连接”按钮即可运行 self.button.clicked.connect(self.on_click) self.show() @pyqtSlot() 单击时的def(自身): #这将在每次单击按钮时创建一个新字段和标签 self.textbox=QLineEdit(self) self.label=QLabel(self) self.label.setText(str(self.counter)) self.label.move(5,self.i) self.button.move(20,self.j) self.textbox.move(20,self.i) self.textbox.resize(280,40) #动态对象名称 self.textbox.setObjectName(“text”+str(self.counter)) self.textbox.show() self.label.show() 自我保护i+=40 自我保护j+=40 self.counter+=1 打印(self.textbox.objectName()) 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': app=QApplication(sys.argv) ex=App() sys.exit(app.exec_())
在我看来,您应该使用QHboxLayout并使用addRow添加所有新创建的小部件。但我不想添加更多小部件,我只想在按下QPushButton时向同一小部件添加更多QLineEdits。如何解决这个问题?我认为你应该使用QHboxLayout并使用addRow添加所有新创建的小部件。但是我不想添加更多的小部件,我只想在按下QPushButton时向同一个小部件添加更多QLineEdits。如何解决?欢迎来到SO,谢谢你的回答。请始终包含一些关于您的代码的描述,以及您是如何解决问题的。欢迎使用SO,谢谢您的回答。请始终包含一些关于您的代码的描述,以及您是如何解决问题的。