Problem beim Importieren von .py-Dateien

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
Schildi
User
Beiträge: 30
Registriert: Freitag 19. Mai 2006, 22:23
Kontaktdaten:

Hi!

um es mal vorweg zu sagen: ich hab ein Problem! :lol:

und zwar bin ich dabei, ein Spiel zu machen. Ich habs auch schon fertig, nur wollte ich jetzt ein menu dazu machen. ich versuche das mal eben zu erklären:

ich hab ein "hauptmenu" [=menu.py]. dann hab ich da 5 texte drin stehn (singleplayer, multiplayer, hilfe [=hilfe.py], credits [=credits.py], exit), wobei ich das jetzt mal nur am beispiel von "hilfe" versuche zu erklären.
jetz hab ich das so gemacht, dass sich, wenn man z.b. auf "Hilfe" klickt, die datei hilfe.py öffnet, ist ja auch logisch. das hab ich so gemacht:

Code: Alles auswählen

if "Hilfe" wird angeklickt:
        import hilfe.py
das klappt auch wunderbar, genauso mit den anderen Texten.
jetz habe ich in der datei hilfe.py und auch in den anderen dateien wieder einen text "Hauptmenu", mit dem man wieder zurück zu menu.py gelangt:

Code: Alles auswählen

if "Hautpmenu" wird angeklickt:
        import menu.py
bis hierhin auch keinerlei probleme. doch wenn ich jetzt wieder im hauptmenu bin, und erneut auf "Hilfe" klicke, kommt folgende fehlermeldung:
Traceback (most recent call last):
File "C:\Python23\Frogger\menu.py", line 51, in -toplevel-
import hilfe.py
File "C:\Python23\Frogger\hilfe.py", line 38, in -toplevel-
import menu.py
File "C:\Python23\Frogger\menu.py", line 51, in -toplevel-
import hilfe.py
ImportError: No module named py
das liegt meiner meinung nach an der endung .py, oder? denn ich hab auch schon versucht, genau die weg zu lassen, also ungefähr so:

Code: Alles auswählen

if "Hilfe" wird angeklickt:
        import hilfe
und

Code: Alles auswählen

if "Hautpmenu" wird angeklickt:
        import menu
dann erscheint zwar, wenn ich auf "hilfe", "hauptmenu", "hilfe" klicke, die fehlermeldung nicht, aber dafür ist der text "Hauptmenu" in hilfe.py nach oben verrutscht und wenn ich drauf klicke, passiert nichts.

und jetzt meine frage: kann mir jemand sagen, woran das liegt? also ich hab schon gegoogelt und auch hier im forum die suche benutzt, wo ich auch fündig geworden bin. jedoch stand da auch immer nur was von "import menu" usw., was mir aber ja nicht weiter hilft.
hoffe, dass mir hier jemand helfen kann, und bedanke mich schonmal im voraus.

Mfg, schildi :wink:
by: Schildi
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

was benutzt du denn? wxWidgets? Tkinter?
Für die gibt es ein eigenes Forum...
Schildi
User
Beiträge: 30
Registriert: Freitag 19. Mai 2006, 22:23
Kontaktdaten:

hm....was ich benutze? also ich muss gestehn, ich kenn mich jetz nich sooo gut aus. :oops: ^^ ich weiß nur das ich halt pthon23 mit pygame nutze. die texte schreib ich in IDLE (python GUI) - python shell.
by: Schildi
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

was importierst du denn alles?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du musst menu.py als menu importieren, das geht nicht anders. Allerdings kann ich dein Problem nicht nachvollziehen, wäre nett wenn du eine Minimalversion deines Programms machst, dass dieses Verhalten hat und es postetst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Schildi
User
Beiträge: 30
Registriert: Freitag 19. Mai 2006, 22:23
Kontaktdaten:

also ich hab mal wie Leonidas gesagt hat, ein kleines beispiel erstellt. das 1. ist ein beispiel dafür, dass ich jeweils

Code: Alles auswählen

import menu.py
zum importieren geschrieben habe, also mit endung. das 2. ist ein beispiel dafür, dass ich jeweils

Code: Alles auswählen

import menu
zum importieren geschrieben habe, also ohne endung.

1. datei: http://people.freenet.de/PMC-Pictures/m ... endung.rar

2. datei: http://people.freenet.de/PMC-Pictures/m ... endung.rar

noch zur erklärung des problems:
wenn ihr bei der 1. datei menu.py normal öffnet, dann klickt mal auf hilfe - hauptmenu - hilfe. dann kommt bei mir die oben genannte fehlermeldung. geht übrigens auch mit den credits.
beim 2. beispiel, ohne endungen, macht das gleiche und es passiert gar nichts bzw. kann ich dann kein 2. mal auf hilfe klicken. ist bei mir jedenfalls so.
so, hoffe das das problem jetzt klarer geworden ist. bestimmt gibts dafür ne ganz einfache lösung - hoffentlich.
ach ja, und noch was: wenn ihr euch die quelltexte anguckt, dann achtet nicht so sehr darauf, was ich da sonst noch fabriziert habe^^ ich glaub das kann man mit sicherheit noch einfacher machen, aber hautpsache das klappt^^

nochmals danke für die bemühungen.

Mfg Schildi
by: Schildi
Schildi
User
Beiträge: 30
Registriert: Freitag 19. Mai 2006, 22:23
Kontaktdaten:

will ja nicht ungeduldig sein, aber hätte keiner ne idee? :wink:
by: Schildi
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Code: Alles auswählen

        for event in pygame.event.get():
	    if event.type == pygame.KEYDOWN:
		if event.key == pygame.K_ESCAPE:
Überprüfe zuerst mal all deine Einrückungen ist noch an anderen Stellen falsch
Schildi
User
Beiträge: 30
Registriert: Freitag 19. Mai 2006, 22:23
Kontaktdaten:

DatenMetzgerX hat geschrieben:

Code: Alles auswählen

        for event in pygame.event.get():
	    if event.type == pygame.KEYDOWN:
		if event.key == pygame.K_ESCAPE:
so kann das aber nicht. das ist schon richtig, so wie ich das hab (was die einrückungen angeht), wenn mich jetzt nicht alles täuscht :wink: nur geht halt beim importieren dauernd was nicht richtig...

mfg schildi
by: Schildi
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Ich habe auch noch nicht gross erfahrung aber das müsste mindestens so sein...

Code: Alles auswählen

for event in pygame.event.get():
    pass
if event.type == pygame.KEYDOWN:
    pass
if event.key == pygame.K_ESCAPE:
    pass
Und das macht keinen Sinn :roll:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Schildi hat geschrieben:das ist schon richtig, so wie ich das hab (was die einrückungen angeht)
Nein, ist es nicht, mein SciTE zeigt mir in jeder Datei Einrückungsprobleme an.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Schildi
User
Beiträge: 30
Registriert: Freitag 19. Mai 2006, 22:23
Kontaktdaten:

also wenn ich es so mache
DatenMetzgerX hat geschrieben:

Code: Alles auswählen

        for event in pygame.event.get():
	    if event.type == pygame.KEYDOWN:
		if event.key == pygame.K_ESCAPE:
dann sagt der mir auch, da wär ein einrückungsfehler. außerdem hab ich das auch bei meinen anderen dateien immer so gemacht und das hat einwandfrei geklappt....

@leonidas: könntest du mir vll sagen, an welchen stellen genau einrückungsfehler sein sollen? oder irgendwie ein screenshot davon machen? wäre nett!

aber mal ganz abgesehn, von den einrückungsfehlern...an sich ist doch sowohl

Code: Alles auswählen

import hilfe.py
also auch

Code: Alles auswählen

import hilfe
richtig, oder? also daran kann es doch nicht liegen, oder?

mfg, schildi
by: Schildi
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Die Einrückung in Python ist ganz einfach

Nach For, While, IF, Else, elif ... muss immer um eins (Tabl, x anzahl Leerschläge) eingerückt werden...
und dann muss mindestens eine Zeile folgen. Wenn nichts ausgeführt werden soll, ist das pass
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Schildi hat geschrieben:@leonidas: könntest du mir vll sagen, an welchen stellen genau einrückungsfehler sein sollen? oder irgendwie ein screenshot davon machen? wäre nett!
Hier eine Datei:
Bild
Schildi hat geschrieben:aber mal ganz abgesehn, von den einrückungsfehlern...an sich ist doch sowohl

Code: Alles auswählen

import hilfe.py
also auch

Code: Alles auswählen

import hilfe
richtig, oder? also daran kann es doch nicht liegen, oder?
Syntaktisch richtig. import hilfe importiert das Modul/Package hilfe und import hilfe.py importiert den Namen py aus dem Modul/Package hilfe, wenn es das nicht gibt, wird ein ImportError geworfen. Also eigentlich ist import host das was du suchst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Schildi
User
Beiträge: 30
Registriert: Freitag 19. Mai 2006, 22:23
Kontaktdaten:

also ich habs jetzt anders gelöst, das klappt auch so wie ich das haben wollte, ist nur ziemlich umständlich. aber naja... :lol:

und wegen den einrückungsfehlern: ich hab mir das noch mal genau angeguckt, und da waren tatsächlich hier und da einige fehler. aber als ich die behoben habe, hats immer noch nicht geklappt. :cry:

@DatenMetzgerX: ja, das weiß ich auch. und da das wie gesagt bei meinen anderen dateien immer einwandfrei geklappt hat, bin ich davon ausgegangen, dass ich das bei dem menu auch richtig gemacht hatte. :wink:

und @Leonidas: thx für den screenshot erstmal. aber wie gesagt, ich hab das jetzt auch anders gelöst. trotzdem würde mich das interessieren, was da dauernd falsch läuft...und wegen
Also eigentlich ist import host das was du suchst
...
da bin ich ehrlich gesagt auch noch nicht richtig hinter gekommen...

mfg schildi
by: Schildi
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Schildi hat geschrieben:da bin ich ehrlich gesagt auch noch nicht richtig hinter gekommen...
Das lies mal [wiki]Modul Import[/wiki].
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten