Python | was ist hier falsch?
def open_file():
my_text.delete("1.0", END)
#get filename
text_file = filedialog.askopenfilename(initialdir="C:/", title="Open File", filetyßes=(("Text Files", "*.txt")))
Ich habe ein Tutorial auf YouTube nachgemacht um einen Text Editor zu erstellen.
Ich bin momentan bei der Funktion um Datein zu öffnen.
Also funktioniert bisher, außer es kommt beim öffnen immer ein Fehler der aber laut dem Py Terminal diese Zeile ist
text_file = filedialog.askopenfilename(initialdir="C:/", title="Open File", filetypes=(("Text Files", "*.txt")))
Kann mir jemand sagen was an dieser Zeile falsch ist?
Hier mal den Console Log
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\xyz\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:\xyz\editor.py", line 16, in open_file
text_file = filedialog.askopenfilename(initialdir="C:/Benutzer", title="Open File", filetypes=(("Text Files", "*.txt")))
)))
File "C:\xyz\AppData\Local\Programs\Python\Python37\lib\tkinter\filedialog.py", line 375, in askopenfilename
return Open(**options).show()
File "C:\xyz\AppData\Local\Programs\Python\Python37\lib\tkinter\commondialog.py", line 43, in show
s = w.tk.call(self.command, *w._options(self.options))
_tkinter.TclError: bad file type "*.txt", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"
3 Antworten
_tkinter.TclError: bad file type "*.txt", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"
Das ist der eigentliche Fehler - TCL flennt hier also. Vielleicht sollten wir uns mal die Doku zu tcl anschauen?
filetypes - a sequence of (label, pattern) tuples, ‘*’ wildcard is allowed
text_file = filedialog.askopenfilename(initialdir="C:/Benutzer", title="Open File", filetypes=(("Text Files", "*.txt")))
---
text_file = filedialog.askopenfilename(initialdir="C:/Benutzer", title="Open File", filetypes=[("Text Files", "*.txt")])
----
text_file = filedialog.askopenfilename(initialdir="C:/Benutzer", title="Open File", filetypes=(("Text Files", "*.txt"),))
In der letzten Variante sollte das , dafür sorgen, daß ein Tupel erzwungen wird*, alternativ könntest Du auch explizit das Tupel erzeugen, denke ich.
Ich mag tkinter nicht ...
(*) Ne, geht nicht, da wird anscheinend ein unpack gemacht
filetyßes
Steht da denn keine Fehlermeldung?
Wobei, in der Fehlermeldung steht es richtig.
Ich glaube da muss
filetypes=[("Text files","*.txt")]
Stehen
Habe einen Kommentar zu meiner Antwort geschrieben, Versuch das Mal.
Ist der Fehler Log noch aktuell danach?
Aber ich würd sagen es stimmt was mim Filetype nicht (nach der Fehlermeldung zu urteilen)
Jakub Bláha reports that
"*.xlsx *.xls"
didn't actually work for him in Python 3.7.4 on Windows 10 version 1903 (though I don't see the same problem); to be safe, omit the
*
if not needed.
probier einfach ohne den asterisk
Da ist mir ein Fehler unterlaufen, hatte ich aber schon behoben. Der Fehler ist trotzdem