Verständnis Problem PyKDE4

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
AngelusNoctis
User
Beiträge: 92
Registriert: Sonntag 16. Dezember 2007, 20:03

Hi

Wollte mal was mit PyKDE schreiben doch schon alleine beim lesen der Dokumentation hab ich ein Problem.

z.B. http://api.kde.org/pykde-4.2-api/kio/KMountPoint.html

Also irgendwie fällt mir hier das komplette Verständnis...

Egal wie ichs drehe und wende es kommt permanent ein Invalid Syntax, TypeError o.ä.

Kann mir hier jemand einen kleinen Demo Code zeigen?

z.B. wie man mittels mountPoint() den mountpint anzeigt?
franzf
User
Beiträge: 78
Registriert: Samstag 29. August 2009, 10:21

Hi,

Dein Problem wird sein, dass du versuchst ein KMountPoint-Objekt selbst zu erstellen. Das geht natürlich nicht :)

Code: Alles auswählen

>>> mp = KMountPoint()                                                 
Traceback (most recent call last):                                     
  File "<stdin>", line 1, in <module>                                  
TypeError: PyKDE4.kio.KMountPoint cannot be instantiated or sub-classed
Steht genau so in der Fehlermeldung.
Du musst dir eine KMountPoint.List durch eine der beiden statischen Methoden geben lassen:

Code: Alles auswählen

>>> l = KMountPoint.currentMountPoints()
Jetzt musst du ein KMountPoint-Objekt suchen (click mal auf KMountPoint.List für die beiden Funktionen):

Code: Alles auswählen

>>> m = l.findByPath( "/home" )                                        
>>> print m.mountPoint()                                               
/home                                                                  
>>> print m.mountType()
ext3
>>> print m.mountedFrom()
/dev/sdb2
>>> print m.probablySlow()
False
Ich hoffe jetzt verstehst du das besser.

Ciao
Franz
AngelusNoctis
User
Beiträge: 92
Registriert: Sonntag 16. Dezember 2007, 20:03

Genau das war mein Problem. Danke.



Btw. Gehts nur mir so oder ist die PyKDE Doku mehr als dürftig? Zum Teil wird auch C++ erwähnt und Tutorials findet man sogut wie keine. Einsteigerfreundlich ist das ned. :(


Edit: Ich hab gerade mal in meinem Buch "Einführung in Python" nachgeschlagen und dort wird Statische Methoden gerade mal mit ca 5 Sätzen angesprochen aber nicht erklärt vorallem nicht mit Code. oO
franzf
User
Beiträge: 78
Registriert: Samstag 29. August 2009, 10:21

AngelusNoctis hat geschrieben:Edit: Ich hab gerade mal in meinem Buch "Einführung in Python" nachgeschlagen und dort wird Statische Methoden gerade mal mit ca 5 Sätzen angesprochen aber nicht erklärt vorallem nicht mit Code. oO
Ist eigentlich nicht so schwer. Eine statische Methode ist eine solche, die ohne vorherige Instantiierung eines Objektes aufgerufen werden kann.
Kleines Beispiel:

Code: Alles auswählen

class Fingerprint:
    def readFinger(self):
        print "Fingerprint verified, You can pass"
    # weitere Methoden

    @staticmethod
    def availableFingerprints():
        print "This is all i have"

fp = Fingerprint() # Fingerprint-Objekt erstellen
fp.readFinger() # Funktion aufrufen
Fingerprint.availableFingerprints() # statische Funktion aufrufen
fp.availableFingerprints() # das geht auch, wenngleich das fp-Objekt nicht notwendig ist!
Fingerprint.readFinger() # das geht NICHT, readFinger() benötigt eine Instanz!
Beachte den decorator "staticmethod". Es gibt aber auch noch "classmethod". Unterschied wird z.B. hier erklärt:
http://rapd.wordpress.com/2008/07/02/py ... assmethod/
AngelusNoctis
User
Beiträge: 92
Registriert: Sonntag 16. Dezember 2007, 20:03

Kann mir jemand verraten wie zum Teufel man mit KMountPoint, KAutoMount oder Solid ein ISO Image mit der mount option Loop mountet? oO


Ich komm ned drauf, finde keine Beispiele, die Doku hilft auch ned und das KDE nicht mal in der Lage ist direkt ein Image zu mounten kann ich ned glauben. oO
lunar

Solid ist eine API zur Hardware-Verwaltung. Ein ISO-Abbild ist keine Hardware. KMountPoint ist bietet nur Informationen über eingehängte Geräte.

Die richtige Klasse ist also KAutoMount, oder als asynchrone Alternative "kio.KIO.mount()". Die Parameter sind doch eigentlich selbsterklärend, wo genau also liegt Dein Problem?
Antworten