PySide6.QtGui.QClipboard¶
- class QClipboard¶
QClipboard类提供了对窗口系统剪贴板的访问。更多…概要¶
方法¶
def
clear()def
image()def
mimeData()def
ownsClipboard()def
ownsFindBuffer()def
ownsSelection()def
pixmap()def
setImage()def
setMimeData()def
setPixmap()def
setText()def
text()
信号¶
def
changed()def
dataChanged()
注意
本文档可能包含从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-filesMIME类型提供,数据以剪切/复制操作开始,接着是换行符和文件的URL。
macOS 用户注意事项¶
macOS 支持一个独立的查找缓冲区,用于在查找操作中保存当前的搜索字符串。可以通过指定
FindBuffer模式来访问此查找剪贴板。Windows 和 macOS 用户注意事项¶
Windows 和 macOS 不支持全局鼠标选择;它们只支持全局剪贴板,即只有在进行显式复制或剪切时才会将文本添加到剪贴板。
Windows 和 macOS 没有所有权的概念;剪贴板是一个完全全局的资源,因此所有应用程序都会收到更改的通知。
Android用户注意事项¶
在Android上仅支持这些MIME类型:text/plain、text/html和text/uri-list。
另请参阅
- class Mode¶
此枚举类型用于控制
mimeData()、setMimeData()及相关函数使用系统剪贴板的哪一部分。常量
描述
QClipboard.Clipboard
表示数据应从全局剪贴板存储和检索。
QClipboard.Selection
表示数据应从全局鼠标选择中存储和检索。仅在具有全局鼠标选择的系统(例如X11)上提供对
Selection的支持。QClipboard.FindBuffer
表示数据应从查找缓冲区存储和检索。此模式用于在macOS上保存搜索字符串。
另请参阅
当给定剪贴板
mode的数据发生变化时,会发出此信号。清除剪贴板内容。
mode参数用于控制使用系统剪贴板的哪一部分。如果mode是Clipboard,此函数将清除全局剪贴板内容。如果mode是Selection,此函数将清除全局鼠标选择内容。如果mode是FindBuffer,此函数将清除搜索字符串缓冲区。另请参阅
- dataChanged()¶
当剪贴板数据更改时,会发出此信号。
在macOS上且使用Qt 4.3或更高版本时,只有在应用程序激活时才能检测到其他应用程序所做的剪贴板更改。
- findBufferChanged()¶
当查找缓冲区发生变化时,会发出此信号。这仅适用于macOS。
使用 Qt 4.3 或更高版本时,只有在应用程序激活时才能检测到其他应用程序对剪贴板的更改。
返回剪贴板中的图像,如果剪贴板不包含图像或包含不受支持的图像格式,则返回空图像。
mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,则从全局剪贴板中检索图像。如果mode是Selection,则从全局鼠标选择中检索图像。返回指向当前剪贴板数据的QMimeData表示的指针(如果平台不支持给定的
mode,则可能为None)。mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,则从全局剪贴板中检索数据。如果mode是Selection,则从全局鼠标选择中检索数据。如果mode是FindBuffer,则从搜索字符串缓冲区中检索数据。text()、image()和pixmap()函数是用于检索文本、图像和像素图数据的更简单的封装器。- ownsClipboard()¶
- Return type:
布尔
如果此剪贴板对象拥有剪贴板数据,则返回
true;否则返回false。- ownsFindBuffer()¶
- Return type:
布尔
如果此剪贴板对象拥有查找缓冲区数据,则返回
true;否则返回false。- ownsSelection()¶
- Return type:
布尔
如果此剪贴板对象拥有鼠标选择数据,则返回
true;否则返回false。返回剪贴板的像素图,如果剪贴板不包含像素图,则返回null。请注意,这可能会导致信息丢失。例如,如果图像是24位而显示器是8位,结果将转换为8位,如果图像有alpha通道,结果将只包含一个掩码。
mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,则从全局剪贴板中检索位图。如果mode是Selection,则从全局鼠标选择中检索位图。- selectionChanged()¶
当选择发生变化时,会发出此信号。这仅适用于支持选择的窗口系统,例如X11。Windows和macOS不支持选择。
- setImage(path)¶
- Parameters:
路径 –
PyPathLike
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
将
image复制到剪贴板。mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,图像将存储在全局剪贴板中。如果mode是Selection,数据将存储在全局鼠标选择中。这是以下内容的简写:
data = QMimeData() data.setImageData(image) clipboard.setMimeData(data, mode)
将剪贴板数据设置为
src。数据的所有权转移到剪贴板。如果你想移除数据,可以调用clear()或者再次调用setMimeData()并传入新的数据。mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,数据将存储在全局剪贴板中。如果mode是Selection,数据将存储在全局鼠标选择中。如果mode是FindBuffer,数据将存储在搜索字符串缓冲区中。setText()、setImage()和setPixmap()函数分别是设置文本、图像和位图数据的简单封装。另请参阅
- setPixmap(path)¶
- Parameters:
路径 –
PyPathLike
将
pixmap复制到剪贴板。请注意,这比setImage()慢,因为它需要先将QPixmap转换为QImage。mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,则位图存储在全局剪贴板中。如果mode是Selection,则位图存储在全局鼠标选择中。将
text作为纯文本复制到剪贴板。mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,文本将存储在全局剪贴板中。如果mode是Selection,文本将存储在全局鼠标选择中。如果mode是FindBuffer,文本将存储在搜索字符串缓冲区中。另请参阅
- supportsFindBuffer()¶
- Return type:
布尔
如果剪贴板支持单独的搜索缓冲区,则返回
true;否则返回false。- supportsSelection()¶
- Return type:
布尔
如果剪贴板支持鼠标选择,则返回
true;否则返回false。返回剪贴板文本为纯文本,如果剪贴板不包含任何文本,则返回空字符串。
mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,则从全局剪贴板中检索文本。如果mode是Selection,则从全局鼠标选择中检索文本。如果mode是FindBuffer,则从搜索字符串缓冲区中检索文本。另请参阅
- text(subtype[, mode=QClipboard.Mode.Clipboard])
- Parameters:
subtype – str
mode –
模式
- Return type:
(retval, subtype)
这是一个重载函数。
返回剪贴板中
subtype子类型的文本,如果剪贴板不包含任何文本,则返回空字符串。如果subtype为null,则任何子类型都可接受,并且subtype将被设置为所选的子类型。mode参数用于控制使用系统剪贴板的哪个部分。如果mode是Clipboard,则从全局剪贴板中检索文本。如果mode是Selection,则从全局鼠标选择中检索文本。subtype的常见值是“plain”和“html”。请注意,重复调用此函数,例如从键事件处理程序中调用,可能会很慢。在这种情况下,您应该使用
dataChanged()信号来代替。另请参阅