Python, PyQt5. Как в textEdit вывести все данные, а не последний результат поиска

Пишу программу, которая выполняет поиск в active directory с GUI собранном в pyQt5.

Загвоздка вот в чем - когда я выполняю поиск, например, по фамилии(а с такой фамилией несколько учеток), то мне отбражаеться только последнее значение в виджете textEdit.

А вот если я выполняю вывод всех значений(в коде экранированная строчка), то мне выдает все учетные записи с такой фамилией.

Что я сделал не так? Как мне вывести все учетки с одинаковой фамилией с выбранными мной атрибутами?

Кусочек кода (функция поиска по фамилии):

def surname_search(self):
    user_surname=self.ui.lineEdit_2.text()
    search_attributes='(anr='+user_surname+')'
    conn.search(ad_search_tree,search_attributes,SUBTREE,attributes = 
        ['cn','GivenName','SN','sAMAccountName', 'displayName', 
        'telephoneNumber', 'mail','employeeID',
        'initials','distinguishedName','memberOf'])
    for entry in conn.entries:
        self.ui.textEdit.setPlainText(str(entry.SN)+" 
            "+str(entry.GivenName)+" "+ str(entry.initials)+"\n"
            +'логин: '+str(entry.cn)+'\n'
            +'таб.№: '+ str(entry.employeeID)+'\n'
            +'почта: '+str(entry.mail)+'\n'
            +'тел.'+str(entry.telephoneNumber)+'\n'
            +str(entry.distinguishedName))
        #self.ui.textEdit.setPlainText(str(conn.entries))
    self.ui.lineEdit_2.clear()

Ответы (1 шт):

Автор решения: gil9red

Метод setPlainText удаляет предыдущее содержимое и вставляет новое, поэтому код ниже всегда показывает последний результат:

for entry in conn.entries:
    self.ui.textEdit.setPlainText(str(entry.SN)+" 
        ...

Используйте метод append:

for entry in conn.entries:
    self.ui.textEdit.append(str(entry.SN)+" 
        ...

PS.

Советую не использовать конкатенацию строк для параметров, эффективнее и красивее сделать через форматирование строки.

Сравните это:

self.ui.textEdit.setPlainText(str(entry.SN)+" 
    "+str(entry.GivenName)+" "+ str(entry.initials)+"\n"
    +'логин: '+str(entry.cn)+'\n'
    +'таб.№: '+ str(entry.employeeID)+'\n'
    +'почта: '+str(entry.mail)+'\n'
    +'тел.'+str(entry.telephoneNumber)+'\n'
    +str(entry.distinguishedName))

с (f-string, для python 3.6 и выше):

self.ui.textEdit.setPlainText(
    f"{entry.SN} {entry.GivenName} {entry.initials}\nлогин: {entry.cn}\n"
    f"таб.№: {entry.employeeID}\nпочта: {entry.mail}\nтел. {entry.telephoneNumber}"
    f"\n{entry.distinguishedName}"
)

Для python 3.5 и ниже, используется str.format

→ Ссылка