ich arbeite mich gerade in Python ein und habe zwei komische Artefakte bei folgendem Grafik-Rumspiel-Skript:
Code: Alles auswählen
# -*- coding: cp1252 -*-
from Tkinter import *
from math import *
xAnfang=20
yAnfang=200
Versatz=3
Amplitude=2
Groesse=50
Teiler=10
def GrafikZeichnen():
for i in range(100):
x1=xAnfang+i*Versatz
x2=x1+Groesse
y1=yAnfang+i*Versatz*sin(i/Teiler)*Amplitude
print i, sin(i/Teiler), y1
y2=y1+Groesse
cnvGrafik.create_oval(x1,y1,x2,y2)
Haupt=Tk()
#Haupt-Frame erzeugen und setzen // bei .pack() funktioniert wegen .grid unten das .quit nicht!
Fenster=Frame(Haupt)
Fenster.grid()
# die Widgets
# # Zeichenflaeche
cnvGrafik=Canvas(Fenster, width=500, height=500, background='white')
# # Schalter "Start"
btnStart=Button(Fenster, text="Start", command=GrafikZeichnen)
# # Schalter "Ende"
btnEnde=Button(Fenster, text="Ende", command=Fenster.quit)
# Setzen der Komponenten mittels Gridmanager
cnvGrafik.grid(row=0, column=0, columnspan=5, sticky=W)
btnStart.grid(row=1, column=1, sticky=S)
btnEnde.grid(row=1, column=3, sticky=S)
# Hauptschleife
Haupt.mainloop()
Zu den zwei Artefakten:
1.) Drücke ich auf "Ende", sehe ich an der Shell, dass das Programm beendet wird; das Fenster verschwindet aber nicht - irgendwann (nach hektischem Geklicke auf das Kreuz) kommt "Das Programm reagiert nicht...". - mit "Sofort beenden" verschwindet es dann. Warum das denn?
2.) Ich würde eigentlich eine sinusförmige Kurve von Kreisen erwarten, stattdessen kommt eine völlig abgedrehte Grafik (probiert's mal aus); habe ich ein Variablen-Problem (float vs. integer)?
Ich benutze Python 2.5 auf WinXP mit IDLE.
Vielen Dank im Voraus,
tomdest