`ImageTK` ist ja auch nicht in PIL defininiert. Aber `ImageTk` ist es. Python ist eine Programmiersprache bei der Gross- und Kleinbuchstaben unterschieden werden.
Wie kommst Du auf die Idee da für X etwas angeben zu müssen? Und warum die Höhe und Breite? Das Bild hat doch eine Höhe und Breite in Pixeln, was willst Du denn da noch zusätzlich angeben?
Ich würde PNG benutzen wenn exakte Farbwerte und/oder Transparenz gefordert sind. JPG für Bilder wo die exakten Farbwerte nicht wichtig sind, keine Transparenz benötigt wird, und die Bilddatei als PNG nicht kleiner ist. JPG auf keinen Fall für Bilder die noch bearbeitet werden sollen, denn bei jedem Speichern kann da wieder ein bisschen Information verloren gehen. Als Ausgangsmaterial ok, aber zwischenspeichern auf jeden Fall in einem verlustlosen Format.
Tkinter App, Turtle ein JPG Skin zuweisen
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Das ganze mal in Hy, einem in Python implementierten Lisp-Dialekt. Die beiden Bilder die gebraucht werden sind 'test.png' was ein "Labyrinth" sein muss, wo Mauern weiss gemalt sind. Um das Bild muss keine Mauer sein, das Programm geht implizit von einer Mauer aus wenn man versucht das Bild zu verlassen. Und 'test2.png' was den Spieler darstellt. Sollte nicht zu gross sein, und kann Transparenz enthalten.
Code: Alles auswählen
#!/usr/bin/env hy
(import
[functools [partial]]
[turtle [*]]
[PIL [Image ImageTk]])
(def *white* (, 255 255 255)
*wall-color* *white*
*move-distance* 3
*fast-distance* 10
*fast-key* "f"
*move-delay* 100 ; In milliseconds.
*background-image* (-> (Image.open "test.png") (.convert "RGB")))
(defn div2 [x]
(/ x 2))
(defn get-image-position [image x y]
(setv [half-width half-height] (map div2 (. image size)))
(, (+ x half-width) (+ (- y) half-height)))
(defn is-wall? []
(setv image-position (get-image-position *background-image* (xcor) (ycor)))
(try
(setv pixel (.getpixel *background-image* image-position))
(except [IndexError]
; Implicit wall outside the image.
True)
(else
(= pixel *wall-color*))))
(defn move-turtle []
(forward *move-distance*)
(if (is-wall?)
(onkeypress None *fast-key*)
(ontimer move-turtle *move-delay*)))
(defmain [&rest args]
(setv [width height] (. *background-image* size))
(setup width height)
; Keep reference to `PhotoImage` instance!
(setv background-photo-image (ImageTk.PhotoImage *background-image*))
(.create-image (getcanvas) 0 0 :image background-photo-image)
(register-shape "player" (Shape "image" (-> (Image.open "test2.png")
(ImageTk.PhotoImage))))
(shape "player")
(onkeypress bye "q")
(onkeypress (partial forward *fast-distance*) *fast-key*)
(for [[key angle] [["w" 90] ["a" 180] ["s" 270] ["d" 0]]]
(onkeypress (partial setheading angle) key))
(listen)
(speed 0)
(showturtle)
(move-turtle)
(exitonclick))
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Du musst vor allem beachten, dass das kein Python ist und sich damit auch nicht mit Python ausführen lässt.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Was sagst du denn zu dem Code:
Was soll ich für "BIld" und was "image" eingeben soll?
Code: Alles auswählen
register_shape("Bild", Shape("image", img))
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Wenn Du das für Python brauchst, kannst Du Dir ja Hy anschauen und es übersetzen. Es verwendet ja letztendlich die Python-Module, weil Hy ein Python-Programm ist und das übersetzte Hy-Programm auf der Python-Bytecode-VM ausgeführt wird.
Zu dem `register_shape()`-Code sage ich das der von Sirius3 ist und er den doch schon erklärt hat‽
Zu dem `register_shape()`-Code sage ich das der von Sirius3 ist und er den doch schon erklärt hat‽
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Du hast doch schon ein Beispiel *und* eine Beschreibung *und* Du kannst auch in der Dokumentation von `register_shape()` und `Shape` nachlesen was die Argumente bedeuten und welche Werte sie haben dürfen. Mit der Dokumentation zu `Shape` und Sirius3's Erklärung zu 'Bild' verstehe ich nicht was man da nicht verstehen kann und was ein weiteres Beispiel klarer machen sollte‽
Selbst ohne weitere Beispiele, was genau funktioniert denn an dem gegebenen Beispiel nicht? (Kleiner Tipp: Das funktioniert genau so wie's da steht! (Sofern `img` einen passenden Wert hat.))
Selbst ohne weitere Beispiele, was genau funktioniert denn an dem gegebenen Beispiel nicht? (Kleiner Tipp: Das funktioniert genau so wie's da steht! (Sofern `img` einen passenden Wert hat.))
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Sorry aber ich sehe manche beiträge nicht, also ich habe keien beschreibung und kein bsp. Da kommt immer deise Fehlermeldung:
Bei diesem Code:
Vllt stimmt ja was an meienem Code nicht oder ich habe einene Beitrag nicht erhalten. Aber so Funktioniert das nicht.
Code: Alles auswählen
raise TurtleGraphicsError("There is no shape named %s" % name)
turtle.TurtleGraphicsError: There is no shape named pyimage2
Code: Alles auswählen
t = Turtle()
img = ImageTk.PhotoImage(Image.open("Turtle.png"))
register_shape("Bild", Shape("image", img))
t.shape(img)
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Was heisst Du siehst manche Beiträge nicht? Hier sieht jeder die gleichen Beiträge. Es gibt hier keinen Beitrag im Forum den ich sehen kann und Du nicht, oder umgekehrt. Und das Beispiel hast Du selbst aus dem Beitrag von Sirius3 in Deinen kopiert, also musst Du den ja wohl auch gesehen haben. Zudem habe ich in meinem letzten Beitrag Beispiel und Erklärung/Antwort auf Deine Frage nach den Werten für 'Bild' und 'image' noch mal verlinkt. Einfach drauf klicken!
Die Fehlermeldung besteht ja nicht nur aus den beiden Zeilen, sondern enthält darüber auch noch den Traceback, wo die Zeile zu finden ist, welche die Ausnahme ausgelöst hat. Und das ist *nicht* die `register_shape()`-Zeile. Sondern die danach. Schau Dir mal die Dokumentation zu `shape()` und `register_shape()` an und überlege mal was Du da übergibst, und in wie weit das von der Dokumentation abweicht. Was ist `img` für ein Wert und welchen Datentyp hat der?
Die Fehlermeldung besteht ja nicht nur aus den beiden Zeilen, sondern enthält darüber auch noch den Traceback, wo die Zeile zu finden ist, welche die Ausnahme ausgelöst hat. Und das ist *nicht* die `register_shape()`-Zeile. Sondern die danach. Schau Dir mal die Dokumentation zu `shape()` und `register_shape()` an und überlege mal was Du da übergibst, und in wie weit das von der Dokumentation abweicht. Was ist `img` für ein Wert und welchen Datentyp hat der?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Bin gerade nicht zu Hause kann also nicht Probieren ob das Funktioniert. Ich denke der Felher liegt bei
Also muss da anstatt von img "image" oder "Bild" einsetzen oder?
Code: Alles auswählen
t.shape(img)
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Das steht in der Dokumentation von `shape()`. Das ist gleich der erste Halbsatz in der Beschreibung.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Ja habe ich gesehen beim suchen. Gut. Hilft mir aber nicht weiter. Ich laufe gerade auf dem Holzweg. Sorry wenn ich euch nerfe, bin aber mit Python relativ unerfahren. Bzw generell mit Programmiersprachen. Vllt könnt ihr mir ja einfach meien Fehler sagen und mir eine Veerbesserung geben.
Ok ich habes es herausgefunden. War wohl ein wenig blind.
Wie verwende ich das jetzt mit bgpic? register_shape() geht ja jetzt nicht.
Code: Alles auswählen
turtle.shape("Bild")
[img]C:\Users\Freddy\Documents\Screenshot.png[/img]
Also bei mir feheln hier mehrere Beiträge. Wenn ich dann aber spezifisch auf eienn antworte bekomme ich allo die danach verfasst wurden.
Wie kann ich hier mein Bild einfügen?
Also bei mir feheln hier mehrere Beiträge. Wenn ich dann aber spezifisch auf eienn antworte bekomme ich allo die danach verfasst wurden.
Wie kann ich hier mein Bild einfügen?