- 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()
注意
这份文档可能包含自动从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。
另请参阅
- 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()#
- 返回类型:
bool
如果此剪贴板对象拥有剪贴板数据,则返回
true
;否则返回false
。- ownsFindBuffer()#
- 返回类型:
bool
如果此剪贴板对象拥有查找缓冲区数据,则返回
true
;否则返回false
。- ownsSelection()#
- 返回类型:
bool
如果此剪贴板对象拥有鼠标选择数据,则返回
true
;否则返回false
。返回剪贴板位图,如果剪贴板不包含位图,则返回 null。请注意,这可能会丢失信息。例如,如果图像是 24 位且显示是 8 位,则结果将转换为 8 位,如果图像具有 alpha 通道,则结果只有遮罩。
mode
参数用于控制使用系统剪贴板的哪个部分。如果mode
是Clipboard
,则从全局剪贴板检索位图。如果mode
是Selection
,则从全局鼠标选择中检索位图。- selectionChanged()#
当选择改变时发射此信号。这仅适用于支持选择的窗口系统,例如 X11。Windows 和 macOS 不支持选择。
- setImage(path)
- 参数:
path –
PyPathLike
警告
本节包含自动从C++转换为Python的代码片段,可能包含错误。
将图像复制到剪切板。
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)#
- 参数:
path –
PyPathLike
将
pixmap
复制到剪贴板。请注意,这比setImage()
要慢,因为需要先将QPixmap
转换为QImage
。使用
mode
参数来控制使用系统剪贴板的哪个部分。如果mode
为Clipboard
,位图将被存储在全局剪贴板中。如果mode
为Selection
,位图将被存储在全局鼠标选择中。以纯文本形式将
text
复制到剪贴板。mode
参数用于控制使用系统剪贴板哪一部分。如果mode
是Clipboard
,则文本存储在全局剪贴板中。如果mode
是Selection
,则文本存储在全局鼠标选择中。如果mode
是FindBuffer
,则文本存储在搜索字符串缓冲区中。另请参阅
- supportsFindBuffer()#
- 返回类型:
bool
返回
true
表示剪贴板支持单独的搜索缓冲区;否则返回false
。- supportsSelection()#
- 返回类型:
bool
返回
true
表示剪贴板支持鼠标选择;否则返回false
。返回剪贴板的纯文本文本,如果剪贴板中不包含任何文本,则返回空字符串。
mode
参数用于控制使用系统剪贴板哪一部分。如果mode
是Clipboard
,则从全局剪贴板中检索文本。如果mode
是Selection
,则从全局鼠标选择中检索文本。如果mode
是FindBuffer
,则从搜索字符串缓冲区中检索文本。另请参阅
- text(subtype[, mode=QClipboard.Mode.Clipboard])
- 参数:
subtype – str
mode –
Mode
- 返回类型:
(retval, subtype)
这是一个重载函数。
返回与子类型
subtype
相关的剪贴板文本,如果没有文本,则返回空字符串。如果subtype
为 null,则接受任何子类型,并将subtype
设置为所选子类型。使用
mode
参数来控制使用系统剪贴板的哪个部分。如果mode
是Clipboard
,则从全局剪贴板检索文本。如果mode
是Selection
,则从全局鼠标选择中检索文本。常见的
subtype
值是“plain”和“html”。注意,连续调用此函数,例如从键事件处理程序中调用,可能会很慢。在这种情况下,您应使用
dataChanged()
信号。另请参阅