ein programm mit Tkinter modul funktionierte und dann auf einmal nicht mehr.
Wenn ich nun normal schreibe:
import Tkinter
fenster1= Tk()
kommt eine Fehlermeldung
fenster1 = Tk()
NameError: name 'Tk' is not defined
??? obwohl es schonmal klappte
Fehler bei import ?????
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
Tkinter includiert man oft mit
Code: Alles auswählen
from Tkinter import *
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wobei das immer eine schlechte wahl ist... Siehe auch: http://pythonwiki.pocoo.org/Modul_Import
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
nun hab ich dann auch umgeschrieben zu from Tkinter import * und dann ging es wieder . aber trotzdem seltsam ,
sind das so die pythonmacken ?
ps: thx für den link
sind das so die pythonmacken ?
ps: thx für den link
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Nein. Das ist Absicht:Torsten2005 hat geschrieben:nun hab ich dann auch umgeschrieben zu from Tkinter import * und dann ging es wieder . aber trotzdem seltsam ,
sind das so die pythonmacken ?
Code: Alles auswählen
>>> import sys
>>> dir()
['__builtins__', '__doc__', '__name__', 'sys']
Code: Alles auswählen
>>> from sys import *
>>> dir()
['__builtins__', '__doc__', '__name__', 'api_version', 'argv', 'builtin_module_n ames',
'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'ex c_clear', 'exc_info',
'exc_type', 'excepthook', 'exec_prefix', 'executable', 'ex it', 'getcheckinterval',
'getdefaultencoding', 'getdlopenflags', 'getfilesysteme ncoding', 'getrecursionlimit',
'getrefcount', 'hexversion', 'maxint', 'maxunicod e', 'meta_path', 'modules', 'path',
'path_hooks', 'path_importer_cache', 'platfo rm', 'prefix', 'ps1', 'ps2', 'setcheckinterval',
'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout',
'version', 'versi on_info', 'warnoptions']
TUFKAB – the user formerly known as blackbird
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
dann versteh ich nicht , warum es vorher ging , und dann auf einmal nicht mehr ?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Weil Python Namensräume hat, diese sind wichtig, damit du weniger Chaos im Code hast.
Dass kann man etwas mit Ordnern im Dateisystem vergleichen: du hast doch auch nicht alle Dateien auf C:\, oder?
Dass kann man etwas mit Ordnern im Dateisystem vergleichen: du hast doch auch nicht alle Dateien auf C:\, oder?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
nein so war es nicht , ich habe zuerst normalJoghurt hat geschrieben:Vorher hast du "from Tkinter import *" geschrieben. Jetzt hast du aus Versehen "import Tkinter" geschrieben.Torsten2005 hat geschrieben:dann versteh ich nicht , warum es vorher ging , und dann auf einmal nicht mehr ?
import Tkinter
fenster1 = Tk()
geschrieben (als Beispiel) und es ging mit den Fenster usw. dann nach mehrmaligen starten und rumbrobieren ging es auf einmal nicht mher und es kan die Fehlermeldung
fenster1 = Tk()
NameError: name 'Tk' is not defined
dann hab ich es umgeändert nacht import Tkinter from *
und es ging wieder!
So wenn ich nun ein neues Fenster aufmache und normal schrieb import modul geht es wieder , warum auch nicht .
und das konnte ich mir nicht erklären ? Dies htte ich auch mit anderen Modulen.
Gruß
Entwickelst du vielleicht unter IDLE? Das benutzt ja Tkinter. Es kann vielleicht sein, dass zum ausführen dieselbe Interpreterinstanz benutzt wird, die auch die GUI bereitstellt, und in der mit from Tkinter import * alles in den globalen Namensraum importiert wurde.
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
ja ich mach alles mit idle , somit kann ich dann immer gleich mit F5 kontrollierenJoghurt hat geschrieben:Entwickelst du vielleicht unter IDLE? Das benutzt ja Tkinter. Es kann vielleicht sein, dass zum ausführen dieselbe Interpreterinstanz benutzt wird, die auch die GUI bereitstellt, und in der mit from Tkinter import * alles in den globalen Namensraum importiert wurde.
- ja könnte sein , kenn mich da mit den namensräumen nicht so aus
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Lieber dafür SceTE verwenden und IDLE wegwerfen.. macht nur Probleme. Such mal im Forum mach "Scite", da bekommst du viele gute Tipps dazu (F5 funktioniert dort übrigens auch).Torsten2005 hat geschrieben:ja ich mach alles mit idle , somit kann ich dann immer gleich mit F5 kontrollieren
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Kann nicht sein. Die IDLE macht ein socket auf um mit der python shell zu kommunizieren. Die bekommt vom Frontend nichts mit.Joghurt hat geschrieben:Entwickelst du vielleicht unter IDLE? Das benutzt ja Tkinter. Es kann vielleicht sein, dass zum ausführen dieselbe Interpreterinstanz benutzt wird, die auch die GUI bereitstellt, und in der mit from Tkinter import * alles in den globalen Namensraum importiert wurde.
TUFKAB – the user formerly known as blackbird
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
cool thx, tooles programm ,Leonidas hat geschrieben: Lieber dafür SceTE verwenden und IDLE wegwerfen.. macht nur Probleme. Such mal im Forum mach "Scite", da bekommst du viele gute Tipps dazu (F5 funktioniert dort übrigens auch).
Der Thread ist zwar schon steinalt, aber bei erneutem Lesen des Wiki-Beitrags zu IDLE, bei dem IDLE ziemlich schlecht wegkommt, habe ich mir mal die Mühe gemacht, einem dort für die "oftmals mit IDLE auftretenden Probleme" angeführten Link zu folgen, der zu diesem Thread führt, der als Beleg herhalten muss, dass IDLE mit Tkinter zusammen problematisch ist.
Nein, ist es nicht. Das Problem des OP ist einfach zu erklären. Wenn er IDLE ohne Subprocess startet (Parameter -n), dann merkt sich IDLE alle Importe, solange es nicht neu gestartet wird. Hat der OP also irgendwann in seiner IDLE-Sitzung mal ein
geschrieben und danach irgendwann mal
(evtl. sogar in einem anderen Quelltext), dann merkt sich IDLE den Sternchenimport und ein
funktioniert dann scheinbar auch nach dem zweiten import.
Ein Fehler oder o.ä. von IDLE ist das nicht. Man muss es halt wissen. Zu Problemen führt das jedenfalls nicht.
Ich habe das jetzt zum Anlass genommen, den [wiki=IDLE]Wiki-Beitrag zu IDLE[/wiki] zu aktualisieren.
Ich warte immer noch auf ein konkretes Beispiel, wo ein Programm außerhalb von IDLE funktioniert und innerhalb von IDLE nicht. Bisher habe ich noch keins gesehen ...
Nein, ist es nicht. Das Problem des OP ist einfach zu erklären. Wenn er IDLE ohne Subprocess startet (Parameter -n), dann merkt sich IDLE alle Importe, solange es nicht neu gestartet wird. Hat der OP also irgendwann in seiner IDLE-Sitzung mal ein
Code: Alles auswählen
from Tkinter import *
Code: Alles auswählen
import Tkinter
Code: Alles auswählen
root = Tk()
Ein Fehler oder o.ä. von IDLE ist das nicht. Man muss es halt wissen. Zu Problemen führt das jedenfalls nicht.
Ich habe das jetzt zum Anlass genommen, den [wiki=IDLE]Wiki-Beitrag zu IDLE[/wiki] zu aktualisieren.
Ich warte immer noch auf ein konkretes Beispiel, wo ein Programm außerhalb von IDLE funktioniert und innerhalb von IDLE nicht. Bisher habe ich noch keins gesehen ...