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()

基础窗口布局设置

相关推荐
你才是向阳花12 小时前
如何用python来做小游戏
开发语言·python·pygame
'需尽欢'14 小时前
基于 Flask+Vue+MySQL的研学网站
python·mysql·flask
新子y15 小时前
【小白笔记】最大交换 (Maximum Swap)问题
笔记·python
程序员爱钓鱼16 小时前
Python编程实战 · 基础入门篇 | Python的缩进与代码块
后端·python
pr_note17 小时前
python|if判断语法对比
python
apocelipes19 小时前
golang unique包和字符串内部化
java·python·性能优化·golang
Geoking.20 小时前
NumPy zeros() 函数详解
python·numpy
Full Stack Developme20 小时前
java.text 包详解
java·开发语言·python
丁浩66621 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
B站_计算机毕业设计之家21 小时前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业