Как можно выделить и скопировать текст из виджета SimpleCardWidget на PyQt6?

Есть виджет для вывода сообщений:

        self.messages_widget = SimpleCardWidget()
        self.messages_layout = QVBoxLayout(self.messages_widget)
        self.messages_layout.setAlignment(Qt.AlignmentFlag.AlignTop)

В виджет выводятся различные сообщения, которые нужно выделить и скопировать, но текст в виджете не выделяется.

Как это можно сделать?

Вот самый простой пример кода:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Пример PyQt6")

label = QLabel("Привет из PyQt6!", window)
label.move(50, 50)  # Позиционирование метки

window.setGeometry(100, 100, 300, 200)  # Размер и позиция окна
window.show()
app.exec()

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

Автор решения: S. Nick

textInteractionFlags : Qt::TextInteractionFlags

Указывает, как label должна взаимодействовать с пользовательским вводом, если она отображает текст.

Установите свои импорты и попробуйте:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, \
    QLabel, QVBoxLayout, QLineEdit
from PyQt5.QtCore import Qt


class Test(QWidget):
    def __init__(self):
        super().__init__()

    
        self.label = QLabel("Привет из PyQt6!")
# +++
        self.label.setTextInteractionFlags(Qt.TextSelectableByMouse)     # +++
        
        self.lineEdit = QLineEdit(placeholderText="Привет QLineEdit")
        
        self.layout = QVBoxLayout(self)        
        self.layout.addWidget(self.label, 
            alignment=Qt.AlignmentFlag.AlignHCenter|Qt.AlignmentFlag.AlignTop)
        self.layout.addWidget(self.lineEdit)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Test()
    window.resize(300, 200)
    window.setWindowTitle("Пример PyQt6")
    window.show()
    sys.exit(app.exec())

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка