[Python-de] Windows (98) mag keine Schmetterlinge :(

cruciatuz sasoft at gmx.de
Sat Mar 17 14:27:16 EST 2001


Hello python-de,

  Im attachment findet sich ein script das mit
  Hilfe einer mathematischen Funktion und einem
  Tkinter-Fenster einen Schmetterling zeichnen
  soll.
  Leider läuft dieses Script auf meinem
  Windows-Rechner nicht durch (irgendwann reagiert
  die Anwendung nicht mehr) und unter Linux konnte
  ich es nicht ausprobieren (Python nicht
  installiert, muss ich noch downloaden ...)

  Deshalb ein paar Fragen:

  a) Unter meinem Windows stürzt der Algorythmus
     den Interpreter ins Nirvana (auch wenn der
     Algorythmus isoliert in der shell durchläuft)
     Ist das bei euch auch so?
  b) Läuft das Script auf dem Mac sauber durch?
     (es wurde von einem Mac-User implementiert)
  c) Wie isses unter Linux oder Unix? Läuft es da
     durch, oder hängt es am Zusammenspiel von
     Python und x86 Prozessor?


  PS: Mein System: 128MB Ram, 400Mhz AMD K6-2
                   3DNOW! CPU, Python 2.1beta1

  THX in advance :)


+ ---------------------------------- +
| Stefan Antoni                      |
+ ---------------------------------- +
| Mobile:         +49 (0)171 9587067 |
| ICQ:            72292815           |
| PGP-Key:        AVAILABLE          |
+ ---------------------------------- +

14:20 / Samstag, 17. März 2001
-------------- next part --------------
#! /usr/local/bin/python  <- The UNIX "pound bang hack" (auch she-bang).
#  auf dem Mac bedeutunglos :-)
#  Filename: butterfly.py
#  © 1999 by Jörg Kantel

import Tkinter
import Canvas
import math # für die Sinus- und Kosinus-Funktionen
import sys  # für sys.exit(0)
from Tkconstants import *

class Butterfly:
    def __init__(self, master = None):
        self.canvas = Tkinter.Canvas(master, relief = RIDGE, bd = 2, bg = "white",
        width = 300, height = 300)
        self.canvas.pack()

        self.button = Tkinter.Button(master, text = " Run ", command = self.draw)
        # Der Button soll nicht am unteren Rand "kleben", daher werden oben und
        # unten vier Pixel Rand angefügt.
        self.button.pack(side = BOTTOM, pady = 4)

    def draw(self):
        theta  = 0.0
        while theta < 75.39:
            r = math.exp(math.cos(theta))-2*math.cos(4*theta)+(math.sin(theta/12))**5
            # aus Polarkoordinaten konvertieren:
            x = r*math.cos(theta)
            y = r*math.sin(theta)
            xx = (x*30) + 150# auf Canvas-Größe skalieren
            yy = (y*30) + 150
        if (theta == 0.0):
            Canvas.Line(self.canvas, xx, yy, xx, yy)
        else:
            Canvas.Line(self.canvas, xOld, yOld, xx, yy)
            self.canvas.update_idletasks()
            xOld = xx
            yOld = yy
            theta = theta + 0.02
            self.button.config(text = " Quit ", command = self.exit)

if __name__ == "__main__":
    # Dies ist nur, damit der Titel angezeigt wird ;-)
    root = Tkinter.Tk()
    root.title("Butterfly Curve")

    # Erzeuge eine neue Instanz unserer Schmetterlingsklasse ...
    butterfly = Butterfly(root)
    # ... und bringe sie zum Laufen.
    root.mainloop()


More information about the Python-de mailing list