Как можно выделить и скопировать текст из виджета 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())