【问题标题】:PyQT - copy file to clipboardPyQT - 将文件复制到剪贴板
【发布时间】:2011-08-29 01:49:16
【问题描述】:

是否可以将文件复制到剪贴板?
好像按下了“ctrl+c”。这样当我在某个文件夹中按“ctrl+v”时,它就会出现在这里。

http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qclipboard.html - 找不到任何关于文件的信息。

file = 'C:\foo.file'
clipboard = QtGui.QApplication.clipboard()
????

有可能吗?

【问题讨论】:

  • 您是在应用程序中复制和粘贴,还是需要将文件复制到外部文件夹窗口?
  • 外部文件夹。与文本一样。
  • 备注:应该是QtGui.QGuiApplication。 (或QtWidgets.QApplication

标签: python pyqt


【解决方案1】:

剪贴板数据使用QMimeData 类建模,该类可以包含 URL 列表,包括本地文件系统 URL。

from PyQt4 import QtCore, QtGui

app = QtGui.QApplication([])

data = QtCore.QMimeData()
url = QtCore.QUrl.fromLocalFile('c:\\foo.file')
data.setUrls([url])

app.clipboard().setMimeData(data)

【讨论】:

  • 请记住 X11 剪贴板需要运行事件循环 (QApplication.exec_)。
【解决方案2】:

创建文件的 QUrls,将它们存储在 QMimeData 中并将 QMimeData 粘贴到 QClipboard。 (适用于多个文件,在 KDE 4 上测试,不确定是否适用于 Windows。)

import sys

from PyQt4.QtCore import QMimeData, QUrl
from PyQt4.QtGui import QApplication

app = QApplication(sys.argv)

# Create the urls.
url1 = QUrl('file1')
url2 = QUrl('file2')

# Create the mime data with the urls.
mime_data = QMimeData()
mime_data.setUrls([url1, url2])

# Copy the mime data to the clipboard.
clipboard = QApplication.clipboard()
clipboard.setMimeData(mime_data)

# Run the main loop.
# The X11 clipboard needs the event loop running.
sys.exit(app.exec_())

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 2017-05-15
    • 2013-07-14
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多