Python Projekt ausführen unter Windows funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bladerxdx
User
Beiträge: 5
Registriert: Donnerstag 16. Juni 2016, 11:22

Hallo Leute,
ich habe eine kleine Anwendung geschrieben(Python 3.4). Unteranderem eine kleine Tkinter GUI. Wenn ich das Projekt (bzw die StartDatei) aus der Python IDLE ausführe funktioniert alles einwandfrei. Allerdings wenn ich die Startdatei per: Doppelklick, cmd ( py start.py) oder mit der pythonw.exe ausführe kommt zwar das GUI Fenster, aber von dort an funktioniert nichtsmehr. Massageboxen, Filebrowser, Buttons Alles funktioniert nicht. Ich bekomme nur in der Kommandozeile Fehler "AttributeError: 'module' object hast no attibute 'z.B. massagebox' ". Je nachdem was ich als erstes versuche auf der GUI anzuklicken. Ist das ein TKinter Problem?
Ich würde mich über Hilfe freuen. Danke schonmal im vorraus
BlackJack

@Bladerxdx: Hast Du eventuell auch ein Python 2.x installiert und führst das damit aus?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Bladerxdx hat geschrieben:Ich bekomme nur in der Kommandozeile Fehler "AttributeError: 'module' object hast no attibute 'z.B. massagebox' ".
Fehlermeldungen solltest du immer per Copy&Paste bereitstellen. Die von dir angegebene Fehlermeldung erscheint garantiert nicht - und wenn doch, dann hast du ein ganz anderes grundlegenderes Problem.
Bladerxdx
User
Beiträge: 5
Registriert: Donnerstag 16. Juni 2016, 11:22

Danke für die Antworten,
nein ich habe nur Python 3.4 Installiert. Und zu der Fehlermeldung:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:\Python34\MyProjekt\Tkint.py", line 157, in on_closing
if tkinter.messagebox.askokcancel("Quit", "Wollen Sie das Programm verlassen
?"):
AttributeError: 'module' object has no attribute 'messagebox'

Diesen Fehler bekomme ich wenn ich in meiner GUI auf das rote x klicke, da ich dort diese massagebox aufrufe.
"AttributeError: 'module' object hast no attibute 'z.B. massagebox' " Was ich oben geschrieben habe sollte deutlich machen, dass es bei jedem element in der GUI passiert. Der "AttributeError: 'module' object hast no attibute" Teil ändert sich nicht, nur eben das Element welches den Fehlerwirft. Daher gehe ich davon aus dass die spezielle Fehlermeldung nicht von Bedeutung für den Fehler ist, sondern einfach generell der AttributeError.
Die selben Fehler treten auch auf wenn ich das Projekt zu einer .exe kompiliere, vermutlich aus dem selben mir unbekannten Grund.
BlackJack

@Bladerxdx: Hast Du `tkinter.messagebox` denn importiert?
Bladerxdx
User
Beiträge: 5
Registriert: Donnerstag 16. Juni 2016, 11:22

Ja habe ich, es sei denn "from tkinter import *" reicht nicht aus. Zudem wenn es ein import fehler wäre, würde Python, da nicht beim ausführen aus der IDLE einen Fehler werfen? Immerhin funktioniert ja alles wenn ich es aus IDLE heraus mit F5 starte.
Und wie gesagt es ist nicht nur "massagebox". Hier ist der Fehler wenn ich einen Button klicke, der mir einen File_Dialog öffnen soll. Nach wie vor aus der IDLE funktioniert es.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:\Python34\MyProjekt\Tkint.py", line 65, in askopenfilename
self.filez = tkinter.filedialog.askopenfilenames(**self.file_opt)
AttributeError: 'module' object has no attribute 'filedialog'
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bladerxdx: *-Importe solltest Du nicht verwenden, weil Du nicht kontrollieren kannst was da importiert wird und was nicht. tkinter.messagebox ist eine Untermodul von tkinter und wird damit nicht importiert. Dass das ganze unter IDLE funktioniert liegt daran, dass IDLE an sich ein Tk-Programm ist und schon einiges Importiert, die Laufzeitumgebung aber nicht sauber vom Editor trennt. Daher ist IDLE zum Entwickeln eigentlich ungeeignet, da das Verhalten sich von dem auf der Konsole unterscheidet, was man als Entwickler nicht haben möchte.
Bladerxdx
User
Beiträge: 5
Registriert: Donnerstag 16. Juni 2016, 11:22

Danke für die gut erklärte Antwort. Ich kann leider auf dem Laptop kein Ecplise o.Ä installieren^^. Daher hatte ich nur IDLE.
Nochmal Danke.
Bladerxdx
User
Beiträge: 5
Registriert: Donnerstag 16. Juni 2016, 11:22

Also wäre der korrekte import: "import tkinter.messagebox" ?
BlackJack

@Bladerxdx: Wenn man das so verwenden möchte wie Du das tust, dann ja.

Es gibt mehr Editoren als IDLE und Eclipse. ;-)
Antworten