Чтение текстовых данных из буфера обмена в Python PySide 6

Чтение текстовых данных из буфера обмена в Python PySide 6

Чтение текстовых данных из буфера обмена в Python PySide 6

В примере ниже я покажу Вам, как можно сделать графическое приложение на PySide 6, которое читает
данные из буфера обмена
и выводит их в текстовую область. Программа читает только текстовые данные
из буфера обмена. Но вполне возможно, что данные в буфере будут иметь и другой формат — в этом случае программа
просто выведет заданный текст.

Вот непосредственно код:


#!/usr/bin/python

import sys

from PySide6 import QtCore
from PySide6.QtCore import Qt
from PySide6.QtGui import QCursor
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QTextEdit

class MainWidget(QWidget):

    def __init__(self):
        super(MainWidget, self).__init__()
        self.initUI()

    def initUI(self):

        self.sourceTextEdit = QTextEdit()

        self.editBox = QHBoxLayout()
        self.editBox.addWidget(self.sourceTextEdit)

        self.convertButton = QPushButton("Буфер обмена")
        self.convertButton.setStyleSheet("padding: 3px 5px")
        self.convertButton.setCursor(QCursor(Qt.PointingHandCursor))
        self.convertButton.clicked.connect(self.onConvertButtonClicked)

        self.cancelButton = QPushButton("Очистить")
        self.cancelButton.setCursor(QCursor(Qt.PointingHandCursor))
        self.cancelButton.clicked.connect(self.onClearButtonClicked)

        self.hbox = QHBoxLayout()
        self.hbox.addStretch(1)
        self.hbox.addWidget(self.convertButton)
        self.hbox.addWidget(self.cancelButton)

        self.vbox = QVBoxLayout()
        self.vbox.addLayout(self.editBox)
        self.vbox.addLayout(self.hbox)

        self.setLayout(self.vbox)    

        self.setGeometry(300, 300, 800, 550)
        self.setWindowTitle('Чтение данных из буфера обмена')    
        self.show()

    # центрирует окно программы по центру рабочего стола
    def center(self):
        qrect = self.frameGeometry()
        qpoint = self.screen().availableGeometry().center()

        qrect.moveCenter(qpoint)
        self.move(qrect.topLeft())

    @QtCore.Slot()
    def onConvertButtonClicked(self):
        convertedText = self.pasted();
        self.sourceTextEdit.setText(convertedText)

    @QtCore.Slot()
    def onClearButtonClicked(self):
        self.sourceTextEdit.setText("")

    def pasted(self):
        # получаем ссылку на буфер обмена
        clipboard = QApplication.clipboard()
        # читаем данные из буфера
        mimeData = clipboard.mimeData()

        # если буфер обмена содержит текст
        if mimeData.hasText():
            # возвращаем его
            return mimeData.text()
        else:
            return "В буфере обмена нет текстовых данных!"

def main():

    app = QApplication(sys.argv)
    mainWidget = MainWidget()
    mainWidget.center()
    sys.exit(app.exec())

if __name__ == '__main__':
    main()


Источник