PySide6.QtGui.QClipboard

class QClipboard

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

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期望文件以x-special/gnome-copied-files MIME类型提供,数据以剪切/复制操作开始,接着是换行符和文件的URL。

macOS 用户注意事项

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

Windows 和 macOS 用户注意事项

  • Windows 和 macOS 不支持全局鼠标选择;它们只支持全局剪贴板,即只有在进行显式复制或剪切时才会将文本添加到剪贴板。

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

Android用户注意事项

在Android上仅支持这些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)
Parameters:

modeMode

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

clear([mode=QClipboard.Mode.Clipboard])
Parameters:

modeMode

清除剪贴板内容。

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

另请参阅

Mode supportsSelection()

dataChanged()

当剪贴板数据更改时,会发出此信号。

在macOS上且使用Qt 4.3或更高版本时,只有在应用程序激活时才能检测到其他应用程序所做的剪贴板更改。

findBufferChanged()

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

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

image([mode=QClipboard.Mode.Clipboard])
Parameters:

modeMode

Return type:

QImage

返回剪贴板中的图像,如果剪贴板不包含图像或包含不受支持的图像格式,则返回空图像。

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

mimeData([mode=QClipboard.Mode.Clipboard])
Parameters:

modeMode

Return type:

QMimeData

返回指向当前剪贴板数据的QMimeData表示的指针(如果平台不支持给定的mode,则可能为None)。

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

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

注意

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

另请参阅

setMimeData()

ownsClipboard()
Return type:

布尔

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

ownsFindBuffer()
Return type:

布尔

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

ownsSelection()
Return type:

布尔

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

pixmap([mode=QClipboard.Mode.Clipboard])
Parameters:

modeMode

Return type:

QPixmap

返回剪贴板的像素图,如果剪贴板不包含像素图,则返回null。请注意,这可能会导致信息丢失。例如,如果图像是24位而显示器是8位,结果将转换为8位,如果图像有alpha通道,结果将只包含一个掩码。

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

selectionChanged()

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

setImage(path)
Parameters:

路径PyPathLike

setImage(image[, mode=QClipboard.Mode.Clipboard])
Parameters:

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

image复制到剪贴板。

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

这是以下内容的简写:

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

将剪贴板数据设置为src。数据的所有权转移到剪贴板。如果你想移除数据,可以调用clear()或者再次调用setMimeData()并传入新的数据。

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

setText()setImage()setPixmap() 函数分别是设置文本、图像和位图数据的简单封装。

另请参阅

mimeData()

setPixmap(path)
Parameters:

路径PyPathLike

setPixmap(pixmap[, mode=QClipboard.Mode.Clipboard])
Parameters:

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

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

setText(text[, mode=QClipboard.Mode.Clipboard])
Parameters:
  • 文本 – str

  • mode模式

text作为纯文本复制到剪贴板。

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

另请参阅

text() setMimeData()

supportsFindBuffer()
Return type:

布尔

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

supportsSelection()
Return type:

布尔

如果剪贴板支持鼠标选择,则返回true;否则返回false

text([mode=QClipboard.Mode.Clipboard])
Parameters:

modeMode

Return type:

字符串

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

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

另请参阅

setText() mimeData()

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

  • mode模式

Return type:

(retval, subtype)

这是一个重载函数。

返回剪贴板中subtype子类型的文本,如果剪贴板不包含任何文本,则返回空字符串。如果subtype为null,则任何子类型都可接受,并且subtype将被设置为所选的子类型。

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

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

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

另请参阅

setText() mimeData()