PySide6实时检测剪贴板(QClipboard)并更新文本

PySide6实时检测剪贴板(QClipboard)并更新文本

注意事项

  1. 代码已经在Windows 10 工作站版与Linux Gnome环境上做过测试
  2. 差异Windows10工作站版运行代码无法读取上一次剪贴板内容(程序运行以后,可以获取)

代码示例

单行文本框 QLineEdit实现
py 复制代码
# coding = utf-8

from PySide6.QtWidgets import QMainWindow,QLineEdit,QApplication
from PySide6.QtGui import QGuiApplication
import sys

class TestCliboard(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi()

    def setupUi(self):
        self.setWindowTitle("实时检测并更新文本")
        self.resize(400,300)

        # 实例化 剪贴板对象
        self.clipboard = QGuiApplication.clipboard()
        
        # 嵌入单行文本
        self.lineText =  QLineEdit()
        self.setCentralWidget(self.lineText)

        # 触发剪贴板数据改变信号时更新文本
        self.clipboard.dataChanged.connect(self.updateText)

    
    def updateText(self):
        clipboardText = self.clipboard.text()
        if clipboardText:
            self.lineText.setText(clipboardText)
        else:
            self.lineText.setText("剪贴板内没有文本!")




if __name__ == "__main__":
    app = QApplication(sys.argv)
    testCliboard = TestCliboard()
    testCliboard.show()
    sys.exit(app.exec())
标签QLabel实现
py 复制代码
# coding = utf-8
# coding = utf-8
from PySide6.QtWidgets import QWidget,QLabel,QVBoxLayout,QApplication
from PySide6.QtGui import QGuiApplication
import sys

class BoardText(QWidget):

    def __init__(self):
        super().__init__()
        self.setupUi()

    def setupUi(self):
        self.setWindowTitle("更新与显示剪贴板内容")
        self.resize(400,100)

        vbox = QVBoxLayout(self)
        self.textLable =  QLabel(self)
        vbox.addWidget(self.textLable)
        
        self.clipboard_ = QGuiApplication.clipboard()
        self.clipboard_.dataChanged.connect(self.updateLabelText)
        
    def updateLabelText(self):
        mimeData_ = self.clipboard_.mimeData()
        hasText = mimeData_.hasText()
        clipboardText = mimeData_.text()

        if hasText:
            self.textLable.setText(clipboardText)
        else:
            self.textLable.setText("剪贴板内没有文本!")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    boardText = BoardText()
    boardText.show()
    sys.exit(app.exec())

效果演示




参考

剪贴板类(QtGui.QClipboard)

剪切板数据改变检测信号(QtGui.QClipboard.dataChanged()

主窗口设置中心控件(QMainWindow.setCentralWidget()

基础窗口布局设置

相关推荐
Mr.朱鹏4 分钟前
大模型入门学习路径(Java开发者版)下
java·python·学习·微服务·langchain·大模型·llm
weixin_4215850110 分钟前
PYTHON中的索引操作
python
_Li.25 分钟前
机器学习-特征选择
人工智能·python·机器学习
魔镜前的帅比32 分钟前
Agent 错误恢复与回退策略
python·ai
叶子丶苏34 分钟前
第十九节_PySide6基本窗口控件深度补充_剪贴板与拖曳功能(Drag 与 Drop) 下篇
python·pyqt
猿饵块1 小时前
python--锁
java·jvm·python
星辰落满衣1 小时前
股票实时交易数据之Python、Java等多种主流语言实例代码演示通过股票数据接口
java·开发语言·python
F_D_Z2 小时前
哈希表解Two Sum问题
python·算法·leetcode·哈希表
智算菩萨2 小时前
【实战】使用讯飞星火API和Python构建一套文本摘要UI程序
开发语言·python·ui
Groundwork Explorer2 小时前
异步框架+POLL混合方案应对ESP32 MPY多任务+TCP多连接
python·单片机