Я пытаюсь создать оконное приложение в pyqt5, в котором пользователь вводит число, а затем нажимает кнопку («нажмите меня»).
После этого создается количество строк в соответствии с введенным пользователем номером и одной кнопкой («GO»)
В каждом столбце есть три метки с тремя текстовыми полями
Мне уже удалось создать строки, но я не могу выбрать данные из текстовых полей при нажатии кнопки
Примечание 1: Для простоты я просто пробовал код только для одного текстового поля, тогда я добавлю больше текстовых полей
Примечание 2: я слышал о какой-то функции, называемой лямбда, но я искал ее и не мог найти хорошее объяснение этому
Примечание 3: похожие вопросы, которые не работали для меня:
Доступ к динамически добавленным виджетам Я не знал, как использовать этот ответ, так как у меня есть два вида виджетов в макете, метка и qlinedit
получение значений из динамически создаваемых 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_())
Главное окно программы
когда пользователь вводит, например, 2 для создания 2 строк