class QClipboard#

QClipboard 类提供对窗口系统剪贴板的访问。了解更多...

Inheritance diagram of PySide6.QtGui.QClipboard

概述#

方法#

信号#

注意

这份文档可能包含自动从C++翻译到Python的代码片段。我们总是欢迎对片段翻译的贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建票据的方式来通知我们。

详细描述#

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

剪贴板提供了一个简单的机制,用于在应用程序之间复制和粘贴数据。

QClipboard 支持与 QDrag 相同的数据类型,并使用类似的机制。有关高级剪贴板使用,请参阅 拖放

应用程序中有一个 QClipboard 对象,可通过 QGuiApplication::clipboard() 访问。

示例

clipboard = QGuiApplication.clipboard()
originalText = clipboard.text()
# etc.
clipboard.setText(newText)

QClipboard 提供一些便利函数来访问常见的数据类型:setText() 允许交换Unicode文本,setPixmap()setImage() 允许应用程序之间交换 QPixmaps 和 QImages。函数 setMimeData() 提供了最大的灵活性:它允许您将任何 QMimeData 添加到剪贴板。对于这些函数,都有相应的获取器,例如 text()image()pixmap()。您可以通过调用 clear() 来清除剪贴板。

以下是一个使用这些函数的典型示例

def paste(self):

    clipboard = QApplication.clipboard()
    mimeData = clipboard.mimeData()
    if mimeData.hasImage():
        setPixmap(QPixmap(mimeData.imageData()))
     elif mimeData.hasHtml():
        setText(mimeData.html())
        setTextFormat(Qt.RichText)
     elif mimeData.hasText():
        setText(mimeData.text())
        setTextFormat(Qt.PlainText)
    else:
        setText(tr("Cannot display data"))

为X11用户提供的说明#

  • X11窗口系统有单独的选择和剪贴板的概念。当选择文本时,它立即以全局鼠标选择的形式可用。全局鼠标选择后来可以复制到剪贴板。按照惯例,中间鼠标按钮用于粘贴全局鼠标选择。

  • X11同样有所有权的概念;如果你在一个窗口内更改选择,X11只会通知所有者和前所有者,也就是说,它不会通知所有应用程序选择或剪贴板数据已经更改。

  • 最后,X11剪贴板是事件驱动的,也就是说,如果事件循环没有运行,剪贴板将无法正常工作。同样,建议直接响应用户输入事件(例如鼠标按钮或按键按下和释放)来存储或检索剪贴板内容。你不应该对计时器或非用户输入事件做出响应来存储或检索剪贴板内容。

  • 由于X11应用程序间没有标准的方式复制和粘贴文件,因此目前正在使用各种MIME类型和约定。例如,Nautilus期望文件提供带有以剪切/复制操作开头,一个换行符和文件URL的 x-special/gnome-copied-files MIME类型。

# macOS用户注意事项

macOS支持一个独立的查找缓冲区,用来在查找操作中存储当前的搜索字符串。这个查找剪贴板可以通过指定 FindBuffer 模式来访问。

# Windows和macOS用户注意事项

  • Windows和macOS不支持全局鼠标选择;它们只支持全局剪贴板,也就是说,只有在进行明确的复制或剪切操作时,它们才会向剪贴板添加文本。

  • Windows和macOS没有所有权的概念;剪贴板是完整的全局资源,所以所有应用程序都会收到更改的通知。

# 安卓用户注意事项

在安卓上,只支持以下这些MIME类型:text/plain, text/html, 和 text/uri-list。

另请参阅

QGuiApplication

class Mode#

此枚举类型用于控制哪些系统剪贴板的哪部分由 mimeData()setMimeData() 和相关函数使用。

常量

描述

QClipboard.Clipboard

表示应从全局剪贴板存储和检索数据。

QClipboard.Selection

表示应从全局鼠标选择存储和检索数据。仅在某些支持全局鼠标选择(例如X11)的系统上提供对Selection 的支持。

QClipboard.FindBuffer

表示应从查找缓冲区存储和检索数据。此模式用于在macOS上存储搜索字符串。

另请参阅

supportsSelection()

changed(mode)#
参数:

modeMode

当给定剪贴板的 mode 数据更改时,将发出此信号。

clear([mode=QClipboard.Mode.Clipboard])#
参数:

modeMode

清除剪贴板内容。

使用 mode 参数用于控制使用哪个系统剪贴板部分。如果 modeClipboard ,此函数将清除全局剪贴板内容。如果 modeSelection ,此函数将清除全局鼠标选择内容。如果 modeFindBuffer ,此函数将清除搜索字符串缓冲区。

另请参阅

Mode supportsSelection()

dataChanged()#

当剪贴板数据发生变化时,会发出此信号。

在 macOS 和 Qt 版本 4.3 或更高版本上,其他应用程序在应用程序激活时才会检测到剪贴板更改。

findBufferChanged()#

当搜索缓冲区发生变化时,会发出此信号。这仅适用于 macOS。

使用 Qt 版本 4.3 或更高版本时,其他应用程序在应用程序激活时才会检测到剪贴板更改。

image([mode=QClipboard.Mode.Clipboard])#
参数:

modeMode

返回类型:

QImage

返回剪切板中的图片,如果剪切板没有包含图片或者包含的是不支持的图像格式,则返回空图像。

mode 参数用于控制使用哪些系统剪切板的内容。如果 modeClipboard ,则从全局剪切板获取图片。如果 modeSelection ,则从全局鼠标选择中获取图片。

mimeData([mode=QClipboard.Mode.Clipboard])#
参数:

modeMode

返回类型:

QMimeData

返回当前剪切板数据的 QMimeData 表示的指针(如果给定的 mode 在平台上不受支持,则可以是 None)。

mode 参数用于控制使用哪些系统剪切板的内容。如果 modeClipboard ,则从全局剪切板获取数据。如果 modeSelection ,则从全局鼠标选择中获取数据。如果 modeFindBuffer ,则从搜索字符串缓冲区中获取数据。

函数 text()image()pixmap() 是用于检索文本、图像和图标数据的简单包装器。

注意

返回的指针可能在剪切板内容发生变化时变得无效;无论是通过调用其中一个设置函数还是由系统剪切板在外部更改。

另请参阅

setMimeData()

ownsClipboard()#
返回类型:

bool

如果此剪贴板对象拥有剪贴板数据,则返回 true;否则返回 false

ownsFindBuffer()#
返回类型:

bool

如果此剪贴板对象拥有查找缓冲区数据,则返回 true;否则返回 false

ownsSelection()#
返回类型:

bool

如果此剪贴板对象拥有鼠标选择数据,则返回 true;否则返回 false

pixmap([mode=QClipboard.Mode.Clipboard])#
参数:

modeMode

返回类型:

QPixmap

返回剪贴板位图,如果剪贴板不包含位图,则返回 null。请注意,这可能会丢失信息。例如,如果图像是 24 位且显示是 8 位,则结果将转换为 8 位,如果图像具有 alpha 通道,则结果只有遮罩。

mode 参数用于控制使用系统剪贴板的哪个部分。如果 modeClipboard ,则从全局剪贴板检索位图。如果 modeSelection ,则从全局鼠标选择中检索位图。

selectionChanged()#

当选择改变时发射此信号。这仅适用于支持选择的窗口系统,例如 X11。Windows 和 macOS 不支持选择。

setImage(path)
参数:

pathPyPathLike

setImage(arg__1[, mode=QClipboard.Mode.Clipboard])
参数:

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

将图像复制到剪切板。

mode 参数用于控制使用系统剪切板哪一部分。如果 modeClipboard ,则图像存储在全局剪切板中。如果 modeSelection ,则数据存储在全局鼠标选择中。

这等价于

data = QMimeData()
data.setImageData(image)
clipboard.setMimeData(data, mode)
setMimeData(data[, mode=QClipboard.Mode.Clipboard])
参数:

将剪切板数据设置为 src。数据的所有权转移到剪切板。如果您想删除数据,可以调用 clear() 或再次调用 setMimeData() 并提供新数据。

mode 参数用于控制使用系统剪切板哪一部分。如果 modeClipboard ,则数据存储在全局剪切板中。如果 modeSelection ,则数据存储在全局鼠标选择中。如果 modeFindBuffer ,则数据存储在搜索字符串缓冲区中。

以下函数是设置文本、图片和位图数据的简单包装:setText()setImage()setPixmap()

另请参阅

mimeData()

setPixmap(path)#
参数:

pathPyPathLike

setPixmap(arg__1[, mode=QClipboard.Mode.Clipboard])
参数:

pixmap 复制到剪贴板。请注意,这比 setImage() 要慢,因为需要先将 QPixmap 转换为 QImage

使用 mode 参数来控制使用系统剪贴板的哪个部分。如果 modeClipboard,位图将被存储在全局剪贴板中。如果 modeSelection,位图将被存储在全局鼠标选择中。

setText(arg__1[, mode=QClipboard.Mode.Clipboard])#
参数:
  • arg__1 – 字符串

  • modeMode

以纯文本形式将 text 复制到剪贴板。

mode 参数用于控制使用系统剪贴板哪一部分。如果 modeClipboard,则文本存储在全局剪贴板中。如果 modeSelection,则文本存储在全局鼠标选择中。如果 modeFindBuffer,则文本存储在搜索字符串缓冲区中。

另请参阅

text() setMimeData()

supportsFindBuffer()#
返回类型:

bool

返回 true 表示剪贴板支持单独的搜索缓冲区;否则返回 false

supportsSelection()#
返回类型:

bool

返回 true 表示剪贴板支持鼠标选择;否则返回 false

text([mode=QClipboard.Mode.Clipboard])#
参数:

modeMode

返回类型:

str

返回剪贴板的纯文本文本,如果剪贴板中不包含任何文本,则返回空字符串。

mode 参数用于控制使用系统剪贴板哪一部分。如果 modeClipboard,则从全局剪贴板中检索文本。如果 modeSelection,则从全局鼠标选择中检索文本。如果 modeFindBuffer,则从搜索字符串缓冲区中检索文本。

另请参阅

setText() mimeData()

text(subtype[, mode=QClipboard.Mode.Clipboard])
参数:
  • subtype – str

  • modeMode

返回类型:

(retval, subtype)

这是一个重载函数。

返回与子类型 subtype 相关的剪贴板文本,如果没有文本,则返回空字符串。如果 subtype 为 null,则接受任何子类型,并将 subtype 设置为所选子类型。

使用 mode 参数来控制使用系统剪贴板的哪个部分。如果 modeClipboard ,则从全局剪贴板检索文本。如果 modeSelection ,则从全局鼠标选择中检索文本。

常见的 subtype 值是“plain”和“html”。

注意,连续调用此函数,例如从键事件处理程序中调用,可能会很慢。在这种情况下,您应使用 dataChanged() 信号。

另请参阅

setText() mimeData()