import 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.
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

import funktioniert nicht

Beitragvon oscar15 » Sonntag 21. Mai 2006, 22:11

Also ich hab jetzt ein programm und er soll mir - nebst den normalen importen - auch meine importe annehmen, ab und zu klappt es aber, meistens net!

Hauptprogramm:

Code: Alles auswählen

# Importe

import sys
from Tkinter import *
from Canvas import *
import defi
import status

hf = Tk()

cv = Canvas(hf, width=400, height=150)
cv.pack()

# optische Begrenzungslinien
Line(cv, 20, 20, 20, 120)
Line(cv, 320, 20, 320, 120)
Line(cv, 20, 20, 320, 20)
Line(cv, 320, 120, 20, 120)

bstart = Button(cv, text="Start", command=anim)
wstart = Window(cv, 350, 20, anchor="nw", window=bstart)

bende = Button(cv, text="Ende", command=ende)
wende = Window(cv, 350, 60, anchor="nw", window=bende)


Status.py

Code: Alles auswählen

def anim():
    global xpos, rpos, kreis, aenx, aenr             # akt. Position, Objekt
    cv.delete(kreis)               # altes Objekt löschen
    xpos = xpos + aenx              # neue Position festlegen
    rpos = rpos + aenr               # neues Objekt:
    kreis = Polygon(cv, xpos, rpos, xpos+20+10,rpos,xpos+20,rpos+10,xpos,rpos+10, fill="#ff00aa")
    if xpos>290:                   # bis zur max. Position bewegen
       aenx = -aenx
    if rpos>105:
       aenr = -aenr
    if rpos<20:
       aenr = -aenr
    if xpos<20:
        aenx = -aenx
    cv.after(20,anim)     


defi.py

Code: Alles auswählen

def ende():
   sys.exit(0)


Das sind nur teile daraus, normal klappt es, aber wenn ich sie nach aussen "verlagere", dann hab ich zwar das Pythonsymbol mit dem selben Namen auch in rot, aber sonst passiert nichts weiter, sonder die shell sagt mir, dass ihr die befehle fehlen!

Grüße

Flo
BlackJack

Beitragvon BlackJack » Sonntag 21. Mai 2006, 22:39

Mit ``import modulname`` wird das Modul geladen und nur der `modulname` in das importierende Modul geholt, nicht die Namen die darin enthalten sind!

Also musst Du entweder `defi.ende` schreiben um auf die Funktion in dem Modul zuzugreifen, oder aber die Funktion explizit mit Namen importieren: ``from defi import ende``.

Was auch geht ist der `*`-Import, aber das ist schlechter Stil, weil damit unter Umständen mehr Namen in das Modul geholt werden, als man vielleicht möchte. Gerade bei `Tkinter` sollte man das nicht machen, auch wenn man das unglücklicherweise in fast jedem Tutorial so sieht.
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Montag 22. Mai 2006, 13:36

nee, ich will alle aus den dateien holen, weil sonst das Hauptprogramm zu groß wird, deswegen hab ich die definition - je nachdem was sie bewirken - in eigene Programm verwiesen!

Naja das mit stern oder mit dem reinschreiben hab ich ja acuh schon alles probiert, aber es klappt net, sonder sie werden einfach verschluckt!

trotzdem danke

Flo
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 22. Mai 2006, 14:21

oscar15 hat geschrieben:nee, ich will alle aus den dateien holen, weil sonst das Hauptprogramm zu groß wird, deswegen hab ich die definition - je nachdem was sie bewirken - in eigene Programm verwiesen!

Und was spricht dagegen es so zu machen, wie BlackJack es vorgeschlagen hat?
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], halobungie, r.barrios, WhiteyW