Я пытаюсь автоматизировать свою работу (ответ на электронные письма) с помощью приложения, написанного на Python и Qt с использованием PySide6.Приложение включает виджет QwebEngine, куда я буду загружать учетная запись Outlook, которой мне приходится управлять.
Поэтому я сохраняю множество заранее определенных ответов в группе экземпляров QtextEdit, которые затем сохраняются в списке.Итак, идея такова: я выбираю QtextEdit с ответом, который хочу отправить, а затем у меня есть кнопка, которая копирует содержимое QtextEdit и вставляет его в соответствующее поле в учетной записи Outlook.< /p>
У меня есть этот метод:
def copy_html_to_clipboard(self):
index = self.combo_box.currentIndex()
html_content = self.tab_contents[index]
if index != -1:
mimeData = QMimeData()
mimeData.setHtml(html_content)
clipboard = QApplication.clipboard()
clipboard.setMimeData(mimeData)
где tab_contents содержит текст в формате html, который я получил из выбранного QtextEdit. (с использованием .toHtml())
Это работает, я имею в виду, что когда я нажимаю кнопку «Копировать», контент загружается в системный буфер обмена.
Проблемы возникают когда я пытаюсь вставить его.
Если я попытаюсь вставить его в ЛЮБОЙ браузер, созданный с помощью WebEngine, он просто не вставится.
Я могу вставить нормально в Firefox, LibreOffice и другие приложения. Проблема возникает только в браузерах, созданных с помощью WebEngine. Теперь встроенный браузер в QT основан на WebEngine, поэтому мой код просто не работает в моем приложении.
Если я копирую текст HTML непосредственно из QTextEdit, выбирая его, и скопировав/вставив его с помощью мыши, это работает.
Если я скопирую текст в формате HTML из редактора, такого как LibreOffice, и вставлю его, это сработает.
Итак, я пришел к выводу, что можно просто вызвать команды буфера обмена непосредственно из окон, но когда я вставляю, используя этот подход, я просто получаю простой текст с тегами html, как в Это жирный абзац> вместо настоящий текст, выделенный жирным шрифтом.
Есть ли это исправление?
Я пробовал это, что дает мне текст без тегов, но без какого-либо формата тоже. Просто текст.
def copy_text_to_clipboard(self):
index = self.combo_box.currentIndex()
if index != -1:
clipboard = QApplication.clipboard()
mimeData = QMimeData()
mimeData.setHtml(self.tab_contents[index])
mimeData.setText(self.tab_contents[index])
print(index)
clipboard.setMimeData(mimeData)
Подробнее здесь: https://stackoverflow.com/questions/790 ... oard-in-qt