Python-Einstieg: Wie kann ich Grafiken zeichnen?
Hallo Welt,
nachdem ich nun schon einige Programmiersprachen teilweise beherrsche (Blitz Basic/Blitz Plus, C++ in Ansätzen theoretisch, C#, syntaktische Java-Grundzügen und ein paar .NET-Skriptsprachen), wollte ich mir nun einmal Python vornehmen. Soll ja besonders praktisch für schnelle "Experimente", wie auch ich sie gerne mache, sein ... :-)
Als IDE habe ich mir erstmal PyCharm installiert (unter Windows) und wollte jetzt loslegen, aber bei dem Versuch, etwas Grafisches zu erstellen, habe ich Probleme mit den Modulen bekommen ...
Nach der Anleitung hier [1] sollte ich das graphics.py-Modul einbinden, was ich auch getan habe:
import graphics
Aber dann fehlte scheinbar noch der passende sys.path, also habe ich via SET die Systemumgebungsvariable PYTHONPATH sinnvoll zugewiesen und am Zielort die heruntergeladene graphics.py abgelegt.
In der Befehlszeile wurde der Befehl jetzt quittiert, aber sobald ich das Grafikfenster anzeigen wollte (anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/graphics.html):
win = GraphWin()
... bekam ich diese Fehlermeldung:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'GraphWin' is not defined
Unter PyCharm wird nicht einmal das import-Kommando akzeptiert:
Traceback (most recent call last):
File "bla:/Python/Test.py", line 2, in <module>
import graphics
ModuleNotFoundError: No module named 'graphics'
Was ist hier los?! Ich habe schon einiges versucht, das Problem selber zu lösen, auch um mich aufs Informatikstudium vorzubereiten, aber jetzt musste ich kapitulieren ... :-(
Könnt ihr mir bitte helfen? :-)
Mit freundlichen Grüßen,
KnorxThieus (♂)
[1] http://stackoverflow.com/questions/15886455/simple-graphics-for-python
3 Antworten
import graphics sollte eigentlich funktionieren, wenn graphics.py direkt neben Deinem Python-Programm liegt
.
Anstatt Dich damit herumzuschlagen, kannst Du auch direkt das mitgelieferte Modul tkinter verwenden https://docs.python.org/3/library/tkinter.html). Dann läuft Dein Programm auf jedem Rechner, der Python installiert hat.
Es sieht so aus, als ob graphics.py sowieso bloß auf tkinter basiert und nur ein tk-Fenster mit einem Canvas-Objekt erzeugt. Das schaffst Du auch alleine. Dann kannst Du später noch ein paar Eingabefelder und Buttons hinzufügen.
Danke, ich wollte es mir erstmal nur möglichst einfach machen, aber tkinter ist ja auch einfach :)
Ich wollte allerdings nicht alle Module in meinen Projektordner kopieren, sondern sie aus dem syspath nutzen. Oder ist das für Python die falsche Philosophie?
PS: Kann man mit tkinter auch auf separate Buffer zeichnen und diese später auf das Canvas übertragen?
In der von dir zitierten Stelle steht
from graphics import *
was heißt, dass alle von graphics exportierten Namen importiert werden.
Da Python bei import graphics nicht schimpft, hat es den Modul gefunden.
Wenn du nicht die oben erwähnte (und nicht empfehlenswerte) Syntax verwendest, hast du zwei Möglichkeiten.
1.)
from graphics import GraphWin
oder
2.)
import graphics
...
win= graphics.GraphWin()
Ich habe oben schon geschrieben, dass PyCharm nicht einmal das hier akzeptiert:
import graphics
Aber genau da wollte ich hin, doch egal, ich nutze jetzt einfach Tkinter. :)
in python 3 kannst du recht einfach mit
Tkinter
alle möglichen Grafiken zeichnen
also wenn du animationen machen willst ist das fortgescrittene Python Progammierung, für voll objektorientiertes Programmieren als Einsteiger empfehle ich dir eher C#
Tja ... ich habe es ja oben schon geschrieben, C# kenne ich grundlegend schon - jetzt nicht speziell im Bezug auf Grafik, aber mir ging es jetzt gerade darum, mit Python eine (für mich) neue und unkomplizierte Sprache zu erlernen. Ich wollte jetzt auch weiß Gott keine eigene GUI bauen oder so, einfach mal ein paar Grafikexperimente - Dreieck zu Kreis morphen und so was in der Art.
- Ist Python da überhaupt noch die richtige Sprache oder zu langsam?
- Und wenn ja zu Python, dann mit tkinter oder mit einem anderen Modul? :)
Ja also wenns nichts großes werden soll ist Python eigtl. perfekt, anfängerfreundlich (musst halt auf die Einrückungen achten, da ist der Compiler sehr genau), und für deine Zwecke ist Tkinter eigtl. absolut ausreichend. Für alles was deutlich komplexer wird ist Python eigtl. nicht mehr geeignet
Okay, danke schon mal ...
Ist das auch effizient oder nur für ein paar Spielereien geeignet? Also reicht das z. B. aus, wenn ich ein paar Animationen zeichnen will oder generell mit Buffern arbeiten möchte? Oder gibt es da direkt ein Modul für DirectX, oder wäre das ungewöhnlich?
Als Python-Einsteiger suche ich erstmal den "standardmäßigen" Weg.