Hallo!
Ich habe mir einen Macrorecorder (mit einiger Hilfe) programmiert. Die Aufnahme funktioniert schon ganz gut, ich speichere die Macros mittels filedialog.asksaveasfilename von tkinter. Beim Ausführen des Makros mittels Button und filedialog.askopenfilename möchte ich aber noch den Dateinamen an eine Listbox übergeben. Wie mache ich das?
Bin noch Anfänger - bitte helft mir.
Dateiname übergeben
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Diese Reihnefollge paß nicht:gahleitner hat geschrieben:Beim Ausführen des Makros mittels Button und filedialog.askopenfilename möchte ich aber noch den Dateinamen an eine Listbox übergeben. Wie mache ich das?
Falsche Reihenfolge:
- File mit Macros aussuchen.
- evtl. es in den Speicher laden,
- oder dem Makrointerpreter einen Zugriff zum Filelesen geben
- den Macrointerpreter starten
- und der soll dann den Filenamen in eine Listbox schreiben???
Der hat wahrscheinlich keine Ahnung, wie der File hieß.
Und wo die Listbox ist, davon hat er erst recht keine Ahnung. So etwas geht ihn ja auch überhaupt nichts an. Er hat nur die Macros abzuarbeiten und sonst nichts.
Richtige Reihenfolge:
- File mit Macros aussuchen
- den Filenamen in die Listbox eintragen
- den Macrointerpreter starten
Was spricht da dagegen, oder wo liegt die Schwierigkeit?
-
- User
- Beiträge: 35
- Registriert: Montag 1. Mai 2017, 09:57
Hallo!
Naja - von einen Eingabefeld übergibt man mit Entry.get() - gibt es auch einen Befehl (command) um den dateinamen weiterzugeben? Bin noch Anfänger und weiß keinen, der das macht.
Naja - von einen Eingabefeld übergibt man mit Entry.get() - gibt es auch einen Befehl (command) um den dateinamen weiterzugeben? Bin noch Anfänger und weiß keinen, der das macht.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Nein, Du mußt eine Methode haben, die Du aufrufst.gahleitner hat geschrieben:Hallo!
Naja - von einen Eingabefeld übergibt man mit Entry.get() - gibt es auch einen Befehl (command) um den dateinamen weiterzugeben? Bin noch Anfänger und weiß keinen, der das macht.
Ich habe etwa eine solche Methode implementiert, könnte auch eine Funktion sein, die einen Filedialog öffnet, und falls der File existiert, ihn lädt und ausführt, ähnlich wie Dein Macro Interpreter. Da wird doch der Filename gefunden. Und wenn er gefuinden wird, kann man ihn nach "if filename" in die Listbox schreiben.
Code: Alles auswählen
def show_load_dialog(msg,root = widget('/')):
file_opt = options = {}
options['defaultextension'] = '.py'
options['filetypes'] = [('python files', '.py'), ('gui files', '.gui'), ('all files', '*')]
options['initialfile'] = 'Backup.py'
options['parent'] = root
options['title'] = 'Load & Edit: ' + msg
filename = tkFileDialog.askopenfilename(**file_opt)
if filename:
Oder weißt Du nicht, wie man etwas in eine Listbox einträgt?
-
- User
- Beiträge: 35
- Registriert: Montag 1. Mai 2017, 09:57
Ich habe es auch so geschrieben wie du.
mit filename=filedialog.askopenfilename(....) und mit listbox.insert(END,filename) in die Listbox übergeben. Es wird aber statt des Dateinamens eine Zahl mit einer oder zwei kommastellen in die Listbox geschrieben. Was kann da falsch sein.
Bei dem Parameter "filename" wird doch nur der Dateiname übernommen und nicht der ganze Pfad, oder?
mit filename=filedialog.askopenfilename(....) und mit listbox.insert(END,filename) in die Listbox übergeben. Es wird aber statt des Dateinamens eine Zahl mit einer oder zwei kommastellen in die Listbox geschrieben. Was kann da falsch sein.
Bei dem Parameter "filename" wird doch nur der Dateiname übernommen und nicht der ganze Pfad, oder?
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Warum fragst Du das? Es gibt doch eine einfache Möglichkeit das herauszufinden, nämlich:gahleitner hat geschrieben:Bei dem Parameter "filename" wird doch nur der Dateiname übernommen und nicht der ganze Pfad, oder?
print(filename)
Und siehe da, es war der ganze Pfad
Wenn Du das machst:
import os
Dann bekommst Du den letzten Teil das Pfades, das ist der filename ohne auch den Directory Pfad durch:
os.path.basename(filename)
-
- User
- Beiträge: 35
- Registriert: Montag 1. Mai 2017, 09:57
Vielen Dank für deine Hilfe.
Gibt es einen command um die Dateiendung wegzubekommen?
Gibt es einen command um die Dateiendung wegzubekommen?
@gahleitner: Es gibt in `os.path` eine Funktion um den Namen und die Erweiterung zu trennen.
-
- User
- Beiträge: 35
- Registriert: Montag 1. Mai 2017, 09:57
Hallo!
Ich möchte einen in der Listbox ausgewählten Eintrag mittels Entf-Taste wieder entfernen. Geht das? Wie muss ich das definieren?
Ich möchte einen in der Listbox ausgewählten Eintrag mittels Entf-Taste wieder entfernen. Geht das? Wie muss ich das definieren?
-
- User
- Beiträge: 35
- Registriert: Montag 1. Mai 2017, 09:57
@BlackJack Wie heißen die Funktionen in os.path - wie muß ich das definieren?
@gahleitner: Welche Funktionen in `os.path` zur Verfügung stehen, steht in der Dokumentation. Die Idee war ja eher das Du Dir mal anschaust was es dort alles gibt, und vielleicht auch ein bisschen in einer Python-Shell probierst. Sonst musst Du ja wegen jeder kommenden Kleinigkeit wieder nachfragen und andere für Dich die Funktionen heraus suchen lassen.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Was fragst Du immerzu? Hast Du noch nichts von google gehört?gahleitner hat geschrieben:@BlackJack Wie heißen die Funktionen in os.path - wie muß ich das definieren?
Geb einfach da ein: python os.path
@Alfons Mittelmeyer: bevor man mit google anfängt, sollte man auf python.org gehen, da findet man die Dokumentation direkt.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Was finde ich denn da bei python.org? Da muss python.org eingeben, dann gebe ich dort im Suchfeld ein "os.path" und dann finde ich nichts, nämlich, ich bekomme das: https://www.python.org/search/?q=os.path&submit=Sirius3 hat geschrieben:@Alfons Mittelmeyer: bevor man mit google anfängt, sollte man auf python.org gehen, da findet man die Dokumentation direkt.
Wenn ich aber in das google Suchfeld eingebe: python os.path
Und klicke dann auf das erste von google Gefundene, dann erhalte ich das Richtige: https://docs.python.org/2/library/os.path.html
Du suchst nur am falschen Ort.Alfons Mittelmeyer hat geschrieben:Was finde ich denn da bei python.org? Da muss python.org eingeben, dann gebe ich dort im Suchfeld ein "os.path" und dann finde ich nichts, nämlich, ich bekomme das: https://www.python.org/search/?q=os.path&submit=
a) Für Python 2.7.xx
https://docs.python.org/2/
b) Für Python 3.5.xx
https://docs.python.org/3.5/
Gruss wuf
Take it easy Mates!
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Ist mir zuviel zum Tippen. Da tippe ich doch lieber nur "python" gefolgt von dem was ich suche.wuf hat geschrieben:docs.python.org/3.5/
Welche Suchmaschine verwendest du?Alfons Mittelmeyer hat geschrieben:Ist mir zuviel zum Tippen. Da tippe ich doch lieber nur "python" gefolgt von dem was ich suche.
Ich habe es auf 'Googel' & 'StartPage' mit der Eingabe 'Python os.path' versucht. Da wirst du mit einer Flut von Antworten zugedeckt! Wenn ich deine Beiträge hier in diesem Forum lese glaube ich dir nicht, dass dies für dich zu viel Tipparbeit sein kann.
Gruss wuf
Take it easy Mates!
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Ja ganz schön schwer, wenn man von dieser Flut so erschlagen wird, dass man sich nicht entscheiden kann, was von den ersten vier Einträgen - die sind alle von docs.python.org - man nehmen soll.wuf hat geschrieben:Da wirst du mit einer Flut von Antworten zugedeckt! Wenn ich deine Beiträge hier in diesem Forum lese glaube ich dir nicht, dass dies für dich zu viel Tipparbeit sein kann.
Soll man nun nehmen für Python 2.7.13 oder Python 3.6.1 oder 3.3.6 oder 3.4.5?
Ist eh egal, steht sowieso dasselbe drin und ansonsten kann man dann noch immer in docs.python.orgs die Version wechseln.10.1. os.path — Common pathname manipulations — Python 2.7.13 ...
The os.path module is always the path module suitable for the operating system Python is running on, and therefore ...
http://docs.python.org/2/library/os.path.html
11.2. os.path — Common pathname manipulations — Python 3.6.1 ...
The os.path module is always the path module suitable for the operating system Python is running on, and therefore ...
http://docs.python.org/3/library/os.path.html
11.1. os.path — Common pathname manipulations — Python 3.3.6 ...
To read or write files see open(), and for accessing the filesystem see the os module. The path parameters can be ...
docs.python.org > Python > 3.3.6 Documentation > The Python Standard Library > 11. File and Directory Access
11.2. os.path — Common pathname manipulations — Python 3.4.5 ...
25 Jun 2016 ... To read or write files see open() , and for accessing the filesystem see the os module. The path ...
http://docs.python.org/3.4/library/os.path..