Как взять информацию из нескольких текстовых полей в PyQt5 и сохранить их в своем собственном классе - PullRequest
0 голосов
/ 15 марта 2020

Мне нужно иметь доступ к информации в текстовых полях каждого отдельного класса), чтобы я мог выполнять вычисления с переменными в каждом классе. Я знаю, как это сделать без GUI, но с GUI, как PyQt5

>>> a = 'ABC, DEF, GHIJ'
>>> a.split(',')
['ABC', ' DEF', ' GHIJ']
>>> a = a.split(',')
>>> c = '7.00, 8.00, 9.00'
>>> c = c.split(',')
>>> e = '7.20, 8.20, 9.20'
>>> e = e.split(',')


h = {}

class Profile:
    def __init__(self, *args):
        self.one = h['info1']
        self.two = h['info2']
        self.three = h['info3']


>>> e = []
>>> for i in range(len(a)): # Takes splitted info above, combines it, and adds it to a dictionary(Ex: h['info1'] = ABC, h['info2'] = 7.00, h['info'] = 7.20)
    h['info1'] = a[i]
    h['info2'] = c[i]
    h['info3'] = e[i]
    e.append(Profile(h['info1'], h['info2'], h['info3'])) # Adds each combined list index to its own individual class

1 Ответ

0 голосов
/ 15 марта 2020

Вы бы в основном подключили сигнал некоторого виджета, например QPushButton.clicked, к функции, которая делает то же самое, что и ваш исходный код.

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class Profile:

    def __init__(self, h):
        self.one = h['info1']
        self.two = h['info2']
        self.three = h['info3']


class Template(QWidget):

    def __init__(self):
        super().__init__()
        self.text_boxes = [QLineEdit() for i in range(3)]
        form = QFormLayout(self)
        for i, v in enumerate(self.text_boxes):
            form.addRow(f'Box {i}', v)
        btn = QPushButton('Enter')
        btn.clicked.connect(self.get_values)
        form.addRow(btn)

    def get_values(self):
        a, c, e = [x.text().split(',') for x in self.text_boxes]
        h = {}
        profiles = []
        for i in range(len(a)):
            h['info1'] = a[i]
            h['info2'] = c[i]
            h['info3'] = e[i]
            profiles.append(Profile(h))

        print('Profiles saved', profiles)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    gui = Template()
    gui.show()
    sys.exit(app.exec_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...