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,谢谢您的回答。请始终包含一些关于您的代码的描述,以及您是如何解决问题的。