Seite 1 von 1

import funktioniert nicht

Verfasst: Sonntag 21. Mai 2006, 22:11
von oscar15
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

Verfasst: Sonntag 21. Mai 2006, 22:39
von BlackJack
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.

Verfasst: Montag 22. Mai 2006, 13:36
von oscar15
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

Verfasst: Montag 22. Mai 2006, 14:21
von Leonidas
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?