2016-01-26 25 views
2

代码:为什么PyQt5给我这个类型错误

from PyQt5 import QtWidgets 
from PyQt5.QtGui import QClipboard, QGuiApplication 

text = QClipboard.text(QClipboard.Clipboard) 

和错误信息:

TypeError: arguments did not match any overloaded call: 
QClipboard.text(QClipboard.Mode mode=QClipboard.Clipboard): first argument of unbound method must have type 'QClipboard' 
QClipboard.text(str, QClipboard.Mode mode=QClipboard.Clipboard) -> (str, str): first argument of unbound method must have type 'QClipboard' 

我想写可以管理我的OS剪贴板中的数据的程序。

我应该如何处理这个错误?

回答

0

基于documentation,它似乎是.text(...)的第一个参数需要是一个unicode对象!如果您只是试图指定模式,请将(mode = yourmode)关键字添加到方法调用中。

+0

我改变了这样的代码:'mode = QClipboard.Clipboard text = QClipboard.text(mode = mode)',但也得到相同的错误 – LWH

0

这是一个基本的python错误,与PyQt无关。回溯消息指出:

first argument of unbound method must have type 'QClipboard' 

这是告诉你,text()不是静态方法,因此它期待的QClipboard实例作为第一个参数(即self)。所以你不能直接通过类对象调用QClipboard的任何方法 - 你必须使用一个实例。

QClipboard文档清楚应该如何使用:

QGuiApplication.clipboard().text() 

并注意QGuiApplication.clipboard()一个静态方法,所以你可以直接调用它的类对象上。

+0

非常感谢:) – LWH

相关问题