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

基础窗口布局设置

相关推荐
晚烛4 分钟前
CANN 数据流与内存优化:L1/L2 缓存机制与计算重叠深度解析
人工智能·python·缓存
xiao5kou4chang6kai44 分钟前
如何用Python处理气象海洋数据?台风数据爬取、SST的EOF分析、WRF剖面图绘制
python·气象·台风·wrf·海洋
Reload.5 分钟前
CZ航司,shopping JS逆向 acw_sc__v2
开发语言·javascript·python·网络爬虫·ecmascript
码界筑梦坊6 分钟前
130-基于Python的体育用品销售数据可视化分析系统
开发语言·python·信息可视化·flask·毕业设计
码界筑梦坊7 分钟前
131-基于Flask的美国新泽西州自动售货机销售数据可视化分析系统
开发语言·python·信息可视化·数据分析·flask·毕业设计
子榆.9 分钟前
CANN PyTorch适配器深度拆解:从.cuda()到.npu()到底发生了什么
人工智能·pytorch·python
chushiyunen10 分钟前
python使用笔记(linux环境)
linux·笔记·python
谢白羽13 分钟前
Voicebox 深度指南:开源本地 AI 语音工作室完整评测与上手教程
人工智能·python·开源·tts·voicebox
2401_8685347819 分钟前
论快速应用开发方法及应用
大数据·python
郝学胜-神的一滴20 分钟前
系统设计 012:从用户系统出发,吃透缓存、数据库与高并发设计
java·数据库·python·缓存·php·软件构建