2012-12-27 6 views
1

J'essaie d'utiliser PyKDE, PyKDE.kdecore.KStandardDirs pour être précis. Cette méthode est appelée avec deux chaînes selon le documentation et selon la documentation PyQt4, je peux utiliser le standard Python str s au lieu de QString. Cela ne fonctionne pas:"l'argument 1 a un type inattendu" str ""

>> KStandardDirs.locate()("socket", "foo") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: KStandardDirs.locate(): not enough arguments 
>>> KStandardDirs.locate("socket", "foo") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: KStandardDirs.locate(): argument 1 has unexpected type 'str' 

Je ne peux pas utiliser QString soit parce qu'il ne semble pas exister:

>>> from PyQt4.QtCore import QString 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: cannot import name QString 
>>> from PyQt4.QtCore import * 
>>> QString 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'QString' is not defined 

Qu'est-ce que je fais mal?

Répondre

2

Je soupçonne que PyKDE n'est pas encore prêt pour Python 3, au moins en ce qui concerne ce message d'erreur; Essayez de passer dans un bytestring à la place:

KStandardDirs.locate(b"socket", "foo") 
+0

C'est, bien que le second argument doit être une chaîne régulière: 'KStandardDirs.locate (b "socket", "toto")' – Erik

+0

@Erik: cool, heureux que travaillé. Mise à jour de la réponse pour mieux refléter ce que je pense. –

Questions connexes