Hi.
Lass mir per os.listdir den Ordnerinhalt anzeigen.
Gibt es ne Möglichkeit, dass die einzelnen Files noch jeweils verlinkt sind?
So dass ich sie per klick öffnen kann?
Ordnerinhalt
- Käptn Haddock
- User
- Beiträge: 169
- Registriert: Freitag 24. März 2006, 14:27
Frage an Radio Eriwan:
Im Ernst: Womit in welchem Kontex willst du welche Dateitypen per Klick öffnen? Prinzipiell ist das eine Sache, die das GUI handelt. Den Pfad zur Datei hast du, was du damit machst, ist letztlich deine Sache.
Gruß UWe
Antwort: Im Prinzip ja.Sync32 hat geschrieben:Hi.
Lass mir per os.listdir den Ordnerinhalt anzeigen.
Gibt es ne Möglichkeit, dass die einzelnen Files noch jeweils verlinkt sind?
So dass ich sie per klick öffnen kann?
Im Ernst: Womit in welchem Kontex willst du welche Dateitypen per Klick öffnen? Prinzipiell ist das eine Sache, die das GUI handelt. Den Pfad zur Datei hast du, was du damit machst, ist letztlich deine Sache.
Gruß UWe
---------------------------------
have a lot of fun!
have a lot of fun!
Bei Tkinter kannst du z.B. ein Event verwenden, das wenn du auf den Eintrag in der Liste klickst, der Pfad in einer Variablen aktualisiert wird.
Dann prüfst du ob es sich um eine Datei handelt (isFile(pfad) oder so)
oder um ein Ordner (isDir(pfad))
Entsprechend handelst du dann - im ersten Fall öffnest du die Datei (z.B. os.system(command)), im 2. Fall aktualisierst du die Liste...
Das du in der Console draufklicken kannst, ohne irgendwas GUI-Mäßiges wirst du wohl kaum hinkriegen, da die Console normalerweise nur den Text anzeigt.
Ich weiß nicht ob es Librarys für ConsolenGUIs mit Mausunterstützung gibt.
lg,
...
Dann prüfst du ob es sich um eine Datei handelt (isFile(pfad) oder so)
oder um ein Ordner (isDir(pfad))
Entsprechend handelst du dann - im ersten Fall öffnest du die Datei (z.B. os.system(command)), im 2. Fall aktualisierst du die Liste...
Das du in der Console draufklicken kannst, ohne irgendwas GUI-Mäßiges wirst du wohl kaum hinkriegen, da die Console normalerweise nur den Text anzeigt.
Ich weiß nicht ob es Librarys für ConsolenGUIs mit Mausunterstützung gibt.
lg,
...
Für unixoide Systeme existiert immer noch [mod]curses[/mod], welches auch mit Maus-Events umgehen kann...
getmouse() dürfte die Anforderung erfüllen.
getmouse() dürfte die Anforderung erfüllen.
Danke für die schnellen Antworten.
Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder? )
Hab bloß halt noch das Problem eine Variabel als Wert zu übergeben.
Also im Template hab ich den Platzhalter {{ Var2 }}, der irgendein Wert hat.
Diesen möchte ich meinem Modul xxx geben, klappt aber nicht.
Hab mein Modul die Parameter gesagt mit
def xxx (request, var2)
........
return ......
Und in meiner URL.py hab ich auch folgendes definiert:
....
(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
....
Und den Link wiefolgt im Template:
"./goto_xxx/{{ var2}}/"
Aber wenn ich anschließend aufm Link klicke, passiert nichts. Er refresht die Seite oder so.
Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder? )
Hab bloß halt noch das Problem eine Variabel als Wert zu übergeben.
Also im Template hab ich den Platzhalter {{ Var2 }}, der irgendein Wert hat.
Diesen möchte ich meinem Modul xxx geben, klappt aber nicht.
Hab mein Modul die Parameter gesagt mit
def xxx (request, var2)
........
return ......
Und in meiner URL.py hab ich auch folgendes definiert:
....
(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
....
Und den Link wiefolgt im Template:
"./goto_xxx/{{ var2}}/"
Aber wenn ich anschließend aufm Link klicke, passiert nichts. Er refresht die Seite oder so.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nein, sowas nennt man bei uns, wie überall anders auch, Funktion.Sync32 hat geschrieben:Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder? )
Dem Code nach zu urteilen nutzt du Django, richtig?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ja. Sorry, vergesse es immer wieder zu erwähnen.Leonidas hat geschrieben:Nein, sowas nennt man bei uns, wie überall anders auch, Funktion.Sync32 hat geschrieben:Habe mir nun ein kleines eigenes "Verlinkungs"-Modul gebastelt. (def xxx(): , nennt man doch bei euch Modul oder? )
Dem Code nach zu urteilen nutzt du Django, richtig?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Na dann musst du in der URL-Konfiguration alles nach ``goto_xxx/`` matchen und das als Parameter an deinen View ``xxx`` weiterleiten - das ist dann der Pfad auf dem das ``os.listdir()`` aufgerufen werden soll.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hab ich doch ?!Leonidas hat geschrieben:Na dann musst du in der URL-Konfiguration alles nach ``goto_xxx/`` matchen und das als Parameter an deinen View ``xxx`` weiterleiten
Hier sollte er doch eigneltich den Inhalt der Vaibael var2 mit ins def xxx übergeben.(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wo‽Sync32 hat geschrieben:Hab ich doch ?!Leonidas hat geschrieben:Na dann musst du in der URL-Konfiguration alles nach ``goto_xxx/`` matchen und das als Parameter an deinen View ``xxx`` weiterleiten(r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
Sollte eher so aussehen:
Code: Alles auswählen
(r'^goto_xxx/(?P<path>.*)', 'Myprojects.testapp.views.xxx')
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Danke für die schnelle Antwort.
Mein Link im Template:
"/goto_xxx/{{ var2 }}/
Meine Einstellung in der Url.py
(r'^goto_xxx/(?P<var2 >.*)', 'Myprojects.testapp.views.xxx'),
Meine Funktion:
def xxx(var2):
test123= var2
return HttpResponse(test123)
Error:
xxx() got multiple values for keyword argument 'var2'
Mein Link im Template:
"/goto_xxx/{{ var2 }}/
Meine Einstellung in der Url.py
(r'^goto_xxx/(?P<var2 >.*)', 'Myprojects.testapp.views.xxx'),
Meine Funktion:
def xxx(var2):
test123= var2
return HttpResponse(test123)
Error:
xxx() got multiple values for keyword argument 'var2'
Benutze bitte Code-Tags wenn du Code angibst.Sync32 hat geschrieben:Meine Einstellung in der Url.py
(r'^goto_xxx/(?P<var2 >.*)', 'Myprojects.testapp.views.xxx'),
Meine Funktion:
def xxx(var2):
test123= var2
return HttpResponse(test123)
Error:
xxx() got multiple values for keyword argument 'var2'
Ich würde hier außerdem den Fehler: "error: bad character in group name" erwarten. Das kann einfach nicht der Code sein, der bei dir läuft.
/me hat geschrieben:Sag mal, testest du eigentlich auch mal bevor du hier fragst?Sync32 hat geschrieben: (r'^goto_xxx/'var2, 'Myprojects.testapp.views.xxx'),
Der obige Code kann niemals fehlerfrei gelaufen sein.
Natürlich teste ich. Und würde er fehlerfrei laufen, würde ich ja auch nciht nachfragen. Ich verstehe das bloß nicht.Mein Link im Template:
"/goto_xxx/{{ var2 }}/
Meine Einstellung in der Url.py
(r'^goto_xxx/(?P<var2 >.*)', 'Myprojects.testapp.views.xxx'),
Meine Funktion:
def xxx(var2):
test123= var2
return HttpResponse(test123)
Error:
xxx() got multiple values for keyword argument 'var2'
Ich will doch einfach nur einen String der im Template in dem Platzhalter {{ var2 }} ist per Link in die Funktion xxx übergeben.
So das ich den String in {{ var2 }} in der Funktion verwenden kann.
Das verstehe ich, aber du gibst Fehler an, die gar nicht auftreten können. Wenn du in einem regulären Ausdruck eine named group mit einem Leerzeichen im Namen verwendest dann knallt das sofort. Python unterdrückt da nicht aus Gemeinheit den Fehler um dir dann an anderer Stelle einen Folgefehler um die Ohren zu hauen.Sync32 hat geschrieben:Natürlich teste ich. Und würde er fehlerfrei laufen, würde ich ja auch nciht nachfragen.
Deine Funktion xxx wird von irgendwo mit xxx("foo", var2="bar") aufgerufen. Das passiert allerdings nicht im von dir angegebenen Code.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also mit dem Code den du hier postest kann das eigentlich gar nicht sein, wo käme denn der zweite ``var2``-Parameter her?xxx() got multiple values for keyword argument 'var2'
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ja das frage ich mich auch. Hab die auch schonmal unbenannt aber kommt der selbe Fehler.Leonidas hat geschrieben:Also mit dem Code den du hier postest kann das eigentlich gar nicht sein, wo käme denn der zweite ``var2``-Parameter her?xxx() got multiple values for keyword argument 'var2'
Er hat sie ja einmal als Parameter im Link in der Template..../.../ {{ var2 }}
und einmal als Parameter in der Funktion def xxx(var2):
Ansonsten wird der Platzhalter nur in einer Schleife eingesetzt aber nirgendwo als Parameter.
Wird sie nicht. Benutze Templatesystem und übergebe es per Link an die view.pyDeine Funktion xxx wird von irgendwo mit xxx("foo", var2="bar") aufgerufen. Das passiert allerdings nicht im von dir angegebenen Code.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ok, Vorschlag das zu debuggen:
Nenn den Parameter in der URL-Conf ``path`` statt ``var2`` und füge einen zusätzlichen Parameter ``path`` zuästzlich zu ``var2`` hinzu. Dann müsste der Aufruf gehen und du kannst ``var2`` ausgeben um zu gucken was da übergeben wird und rauszufinden woher es kommt.
Nenn den Parameter in der URL-Conf ``path`` statt ``var2`` und füge einen zusätzlichen Parameter ``path`` zuästzlich zu ``var2`` hinzu. Dann müsste der Aufruf gehen und du kannst ``var2`` ausgeben um zu gucken was da übergeben wird und rauszufinden woher es kommt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice