У меня есть диалоговое окно pyqt, которое принимает список данных, который заканчивается возвратом (от сканера штрих-кода, который имеет автоматический возврат.)
Этот список имеет длину 5 элементов, и в настоящее время я долженнажмите «Добавить данные», чтобы запустить метод populate_row
при вводе 5 элементов.
Я разбил строку на список, используя \n
, и обработал каждый элемент по мере необходимости.
Естьесть ли способ автоматизировать нажатие кнопки add data
, когда число строк или число \n
достигает 5 в поле QPlainTextEdit
?
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class Status(QDialog):
def __init__(self, parent=None):
super(Status, self).__init__(parent)
self.label = QLabel()
self.btn = QPushButton("Input Data")
self.btn.clicked.connect(self.populate_row)
self.layout = QVBoxLayout()
self.layout.addWidget(self.btn)
self.layout.addWidget(self.label)
self.resize(660, 260)
self.setLayout(self.layout)
def populate_row(self, letter):
self.dialog = QDialog()
self.dialog.resize(660, 260)
self.textBox = QPlainTextEdit(self.dialog)
Rbtn = QPushButton("Add Data")
Rbtn.clicked.connect(
lambda: self.enter_data(self.textBox.toPlainText()))
layout = QVBoxLayout(self.dialog)
layout.addWidget(self.textBox)
layout.addWidget(Rbtn)
self.dialog.exec_()
def enter_data(self, text):
self.label.setText(text)
lst = text.split("\n")
try:
for x in lst:
if x != "":
print(x)
self.do_something_with_x()
except IndexError:
pass
self.update_data()
self.dialog.close()
def do_something_with_x(self):
print('Something done with x..')
def update_data(self):
print('Data updated..')
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Status()
ex.show()
sys.exit(app.exec_())