(Python / PyQT5 / matplotlib) Как рассчитать количество слов, введенных в каждый текстовый блок, чтобы использовать его в качестве числового значения? - PullRequest
0 голосов
/ 21 декабря 2018

Я создал окно с метками и текстовыми полями, метки берутся из внешних текстовых файлов .txt и затем объединяются с тем, что пользователь ввел в текстовые поля, а затем сохраняются в другом внешнем файле .txt.Вот как я это реализовал

index = 1
        for line in file_in.readlines():
            self.label[index] = QLabel(self)
            self.label[index].setText(line)
            self.label[index].move(x, y)
            self.label[index].resize(200, 25)

            self.textbox[index-1] = QLineEdit(self)
            self.textbox[index-1].move(205, y)
            self.textbox[index-1].resize(200, 25)

            y += 22
            index += 1

Так что после этого я захотел создать гистограмму, которая использовала бы метки в качестве переменных Y acis.Это моя небрежная реализация этого.

objects = (self.label[1].text(), self.label[2].text(), self.label[3].text(), self.label[4].text(), self.label[5].text(), self.label[6].text(), self.label[7].text(), self.label[8].text(), self.label[9].text(), self.label[10].text(), self.label[11].text(), self.label[12].text(), self.label[13].text(), self.label[14].text(), self.label[15].text(), self.label[16].text(), self.label[17].text(), self.label[18].text(), self.label[19].text(), self.label[20].text(), self.label[21].text(), self.label[22].text(), self.label[23].text(), self.label[24].text(), self.label[25].text(), self.label[26].text(), self.label[27].text(), self.label[28].text(), self.label[29].text(), self.label[30].text())
    y_pos = np.arange(len(objects))

И количество слов, вставленных пользователем как переменные X acis.Я пытался это реализовать, но не смог.

 performance = [len(self.textbox[0].text().split(',')), len(self.textbox[1].text().split(',')), len(self.textbox[2].text().split(',')), len(self.textbox[3].text().split(',')), len(self.textbox[4].text().split(',')), len(self.textbox[5].text().split(',')), len(self.textbox[6].text().split(',')), len(self.textbox[7].text().split(',')), len(self.textbox[8].text().split(',')), len(self.textbox[9].text().split(',')), len(self.textbox[10].text().split(',')), len(self.textbox[11].text().split(',')), len(self.textbox[12].text().split(',')), len(self.textbox[13].text().split(',')), len(self.textbox[14].text().split(',')), len(self.textbox[15].text().split(',')), len(self.textbox[16].text().split(',')), len(self.textbox[17].text().split(',')), len(self.textbox[18].text().split(',')), len(self.textbox[19].text().split(',')), len(self.textbox[20].text().split(',')), len(self.textbox[21].text().split(',')), len(self.textbox[22].text().split(',')), len(self.textbox[23].text().split(',')), len(self.textbox[24].text().split(',')), len(self.textbox[25].text().split(',')), len(self.textbox[26].text().split(',')), len(self.textbox[27].text().split(',')), len(self.textbox[28].text().split(',')), len(self.textbox[29].text().split(','))]

Вместо того, чтобы вычислять фактическое количество слов, вещь просто возвращает 1 во всех случаях.Есть идеи?

Весь сегмент диаграммы:

    objects = (self.label[1].text(), self.label[2].text(), self.label[3].text(), self.label[4].text(), self.label[5].text(), self.label[6].text(), self.label[7].text(), self.label[8].text(), self.label[9].text(), self.label[10].text(), self.label[11].text(), self.label[12].text(), self.label[13].text(), self.label[14].text(), self.label[15].text(), self.label[16].text(), self.label[17].text(), self.label[18].text(), self.label[19].text(), self.label[20].text(), self.label[21].text(), self.label[22].text(), self.label[23].text(), self.label[24].text(), self.label[25].text(), self.label[26].text(), self.label[27].text(), self.label[28].text(), self.label[29].text(), self.label[30].text())
    y_pos = np.arange(len(objects))
    performance = [len(self.textbox[0].text().split(',')), len(self.textbox[1].text().split(',')), len(self.textbox[2].text().split(',')), len(self.textbox[3].text().split(',')), len(self.textbox[4].text().split(',')), len(self.textbox[5].text().split(',')), len(self.textbox[6].text().split(',')), len(self.textbox[7].text().split(',')), len(self.textbox[8].text().split(',')), len(self.textbox[9].text().split(',')), len(self.textbox[10].text().split(',')), len(self.textbox[11].text().split(',')), len(self.textbox[12].text().split(',')), len(self.textbox[13].text().split(',')), len(self.textbox[14].text().split(',')), len(self.textbox[15].text().split(',')), len(self.textbox[16].text().split(',')), len(self.textbox[17].text().split(',')), len(self.textbox[18].text().split(',')), len(self.textbox[19].text().split(',')), len(self.textbox[20].text().split(',')), len(self.textbox[21].text().split(',')), len(self.textbox[22].text().split(',')), len(self.textbox[23].text().split(',')), len(self.textbox[24].text().split(',')), len(self.textbox[25].text().split(',')), len(self.textbox[26].text().split(',')), len(self.textbox[27].text().split(',')), len(self.textbox[28].text().split(',')), len(self.textbox[29].text().split(','))]

    plt.barh(y_pos, performance, align='center', alpha=0.5)
    plt.yticks(y_pos, objects)
    plt.xlabel('Number of inputs')
    plt.title('Association frequency')

Хорошо, так как способ подсчета слов в текстовом поле работает.Я набрал print(len(self.textbox[0].text().split(' '))) И он вернул верный номер.Тем не менее, когда я пытаюсь построить график, проблема остается ... Bar_chart Я в растерянности, осталось 2 часа, чтобы исправить эту последнюю проблему.

...