【发布时间】:2019-09-04 21:10:03
【问题描述】:
我正在尝试在 pyqt5 中创建一个窗口应用程序,其中用户输入一个数字然后单击(“按我”)按钮。
然后根据用户输入的数字和一个按钮(“GO”)创建一些行
每列有三个标签和三个文本框
我已经设法创建了行,但是我无法管理的是当单击按钮时从文本框中获取数据
注意1:为简单起见,我只是尝试了一个文本框的代码,然后我将添加更多文本框
注意2:我听说过一个叫做 Lambda 的函数,但我搜索了它,但找不到很好的解释
注意3:对我不起作用的类似问题: Acessing dynamically added widgets我不知道如何使用这个答案,因为我在布局中有两种小部件,标签和qlinedit
getting values from dynamically created qlinedits这个答案不适合我的情况,因为我想要一个按钮来获取所有创建的文本框中的数据
代码:
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5 import *
from PyQt5.QtWidgets import QLineEdit,QLabel,QGridLayout
import sys
class Window(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.home()
def home(self):
self.grid=QGridLayout()
self.setLayout(self.grid)
self.label=QLabel(self)
self.label.setText("NO")
self.grid.addWidget(self.label,0,1)
self.pushButton_ok = QtWidgets.QPushButton("Press me", self)
self.pushButton_ok.clicked.connect(self.addtextbox)
self.grid.addWidget(self.pushButton_ok,0,10)
self.input1=QLineEdit(self)
self.grid.addWidget(self.input1,0,5)
def addtextbox(self):
no_of_process=(self.input1.text())
no=int(no_of_process)
n=0
while(n<no):
self.bursttime=QLabel(self)
self.bursttime.setText("b")
self.timeinput=QLineEdit(self)
self.grid.addWidget(self.bursttime,2*n+1,0)
self.grid.addWidget(self.timeinput,2*n+1,1)
n=n+1
self.go=QtWidgets.QPushButton("GO",self)
self.grid.addWidget(self.go,6,0)
self.go.clicked.connect(self.printvalues)
def printvalues():
n=0
#fetch data in some way
application = QtWidgets.QApplication(sys.argv)
window = Window()
window.setWindowTitle('Dynamically adding textboxes using a push button')
window.resize(250, 180)
window.show()
sys.exit(application.exec_())
【问题讨论】: