Sprites o. Farbe verschwinden lassen

Fragen zu Tkinter.
Antworten
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Für mich und dem, was ich programmieren will, ist es wichtig, daß ich Sprites erstellen kann. Wie ist mir egal.
Unter Delphi verschwand halt die Randfarbe. Also konnte ich eine Figur malen und ... ja, die Farbe am Rand wurde dann durchsichtig sozusagen.
Bei Tkinter scheint dies nicht der Fall zu sein, oder ich habe es mit dem falschem Widget ausprobiert?
Weiß da Jemand von Euch Rat?

Und noch eine Frage:
Kann es sein, daß man mit Pyhton keine Bitmaps darstellen kann?
Falls doch, welche?
Und wenn nicht, was ist dann zu empfehlen, auch was der Umwandlung von BMP zu GIF ect. betrifft. Den das MS, das Paint, ist da leider totaler Schrott. Und GIMP funktioniert da bei mir auch ganz schlecht, was die Qualität betrifft.

Und noch eine letzte:
Was ist der Unterschied zwischen:

Code: Alles auswählen

root = Tk()
root.bild=PhotoImage(file='C:\\TestBilder\\Testa.gif')
root.label2=Label(root,image=root.bild)
root.label2.pack()
root.mainloop()
und

Code: Alles auswählen

root = Tk()
bild=PhotoImage(file='C:\\TestBilder\\Testa.gif')
label2=Label(root,image=bild)
label2.pack()
mainloop()
Beide machen das gleiche, das habe ich schon getestet.
Damit wollte ich auch zugleich testen, ob die Randfarbe durchsichtig wird, aber leider fehlanzeige.
Aber ... mit unterschiedlichen Befehlszeilen?
Naja, soweit ich mit bekommen habe, mit root.xxx wird halt das Tk mit dem Namen root eben noch mal direkt angesprochen. Aber macht das Sinn? Oder steckt sogar mehr dahinter?

Danke im vorraus, für die Antworten
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
hwm
User
Beiträge: 39
Registriert: Mittwoch 20. April 2005, 23:33

Natürlich kann man mit Tkinter Bitmaps darstellen, und zwar vom Feinsten. Für jpg-Dateien muss man PIL (Python-Image-Library) installieren und importieren.

Und was sind nun Sprites???
BlackJack

Erwin hat geschrieben:Für mich und dem, was ich programmieren will, ist es wichtig, daß ich Sprites erstellen kann. Wie ist mir egal.
Da fällt einem spontan PyGame ein, da gibt's Sprite-Objekte. Aber wenn Du nicht gerade ein Spiel programmieren möchtest ist das wohl die falsche Bibliothek. :wink:
Unter Delphi verschwand halt die Randfarbe. Also konnte ich eine Figur malen und ... ja, die Farbe am Rand wurde dann durchsichtig sozusagen.
Transparenz mit "Colorkey" gibts bei Tk soweit ich weiss nicht. Aber Tk kann mit dem GIF-Format umgehen.
Und noch eine Frage:
Kann es sein, daß man mit Pyhton keine Bitmaps darstellen kann?
Falls doch, welche?
Mit Tk kannst Du wirkliche Bitmaps darstellen, also wo jedes Bit wirklich angibt ob ein Punkt gesetzt ist oder nicht. Und man kann "PhotoImages" anzeigen, das sind dann Bilder mit vielen Farben. Tk kann von Haus aus mit XBM, GIF und JPEG umgehen. Ansonsten kann man eine Menge Formate mit der Python Imaging Library, kurz PIL, einlesen, verarbeiten und auch mit `Tkinter` anzeigen.
Und wenn nicht, was ist dann zu empfehlen, auch was der Umwandlung von BMP zu GIF ect. betrifft. Den das MS, das Paint, ist da leider totaler Schrott. Und GIMP funktioniert da bei mir auch ganz schlecht, was die Qualität betrifft.
Was ist denn schlecht an der Umwandlung mit GIMP? Das kann man damit eigentlich ganz gut machen.
Und noch eine letzte:
Was ist der Unterschied zwischen:

Code: Alles auswählen

root = Tk()
root.bild=PhotoImage(file='C:\\TestBilder\\Testa.gif')
root.label2=Label(root,image=root.bild)
root.label2.pack()
root.mainloop()
und

Code: Alles auswählen

root = Tk()
bild=PhotoImage(file='C:\\TestBilder\\Testa.gif')
label2=Label(root,image=bild)
label2.pack()
mainloop()
Beide machen das gleiche, das habe ich schon getestet.
Damit wollte ich auch zugleich testen, ob die Randfarbe durchsichtig wird, aber leider fehlanzeige.
Aber ... mit unterschiedlichen Befehlszeilen?
Naja, soweit ich mit bekommen habe, mit root.xxx wird halt das Tk mit dem Namen root eben noch mal direkt angesprochen. Aber macht das Sinn? Oder steckt sogar mehr dahinter?
Im ersten Beispiel werden eine Menge Attribute dem `Tk` Object hinzugefügt. Keine so tolle Idee würde ich sagen.

@hwm: Als Sprites bezeichnete man früher Grafikobjekte, die von der Hardware unabhängig vom Rest der angezeigten Grafik dargestellt wurden. Also die Raumschiffe in Space Invaders auf dem C64 zum Beispiel.
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

BlackJack hat geschrieben:
Erwin hat geschrieben:Für mich und dem, was ich programmieren will, ist es wichtig, daß ich Sprites erstellen kann. Wie ist mir egal.
Da fällt einem spontan PyGame ein, da gibt's Sprite-Objekte. Aber wenn Du nicht gerade ein Spiel programmieren möchtest ist das wohl die falsche Bibliothek. :wink:
Leider kann ich mit Englischen Seiten nicht viel Anfangen.
Und mir geht es ja nicht um echte Sprites, sondern um um Optische Darstellung dergleichen. Wenn ich eine Figur über einen Hintergrund oder Spielbrett laufen lassen will, dann soll das nicht unbedingt wie ein Block aussehen.
BlackJack hat geschrieben:
Unter Delphi verschwand halt die Randfarbe. Also konnte ich eine Figur malen und ... ja, die Farbe am Rand wurde dann durchsichtig sozusagen.
Transparenz mit "Colorkey" gibts bei Tk soweit ich weiss nicht. Aber Tk kann mit dem GIF-Format umgehen.
Das verstehe ich jetzt nicht?
Was hat das Formt GIF mit dem transparieren von einer bestimmten Farbe zu tun?
BlackJack hat geschrieben:
Und noch eine Frage:
Kann es sein, daß man mit Pyhton keine Bitmaps darstellen kann?
Falls doch, welche?
Mit Tk kannst Du wirkliche Bitmaps darstellen, also wo jedes Bit wirklich angibt ob ein Punkt gesetzt ist oder nicht. Und man kann "PhotoImages" anzeigen, das sind dann Bilder mit vielen Farben. Tk kann von Haus aus mit XBM, GIF und JPEG umgehen. Ansonsten kann man eine Menge Formate mit der Python Imaging Library, kurz PIL, einlesen, verarbeiten und auch mit `Tkinter` anzeigen.
Also ich habe versuchte eine *.BMP - Datei zu laden, in den Speicher von 'PhotoImage'. Da gab es aber von der IDLE eine Fehlermeldung.
BlackJack hat geschrieben:
Und wenn nicht, was ist dann zu empfehlen, auch was der Umwandlung von BMP zu GIF ect. betrifft. Den das MS, das Paint, ist da leider totaler Schrott. Und GIMP funktioniert da bei mir auch ganz schlecht, was die Qualität betrifft.
Was ist denn schlecht an der Umwandlung mit GIMP? Das kann man damit eigentlich ganz gut machen.
Der verwandelt zu viele Farben um, so das daß Bild ganz anders aussieht. Bei Flächen, wo zuvor nur eine Farbe war, waren dann mehre Farben und hatte den Effekt der totalen unschärfe und komischen Schneeefekt.
Kann sein das es beim akuellstem GIMP nicht mehr der Fall ist. Aber damals (vor 2 Jahren) war es bei mir so. Und das Paint von MS konnte dies auch noch toppen.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Erwin hat geschrieben:
BlackJack hat geschrieben:
Unter Delphi verschwand halt die Randfarbe. Also konnte ich eine Figur malen und ... ja, die Farbe am Rand wurde dann durchsichtig sozusagen.
Transparenz mit "Colorkey" gibts bei Tk soweit ich weiss nicht. Aber Tk kann mit dem GIF-Format umgehen.
Das verstehe ich jetzt nicht?
Was hat das Formt GIF mit dem transparieren von einer bestimmten Farbe zu tun?
Gif kennt selber Transparenzen - wie du an meinem Avatar siehst.

cu Sebastian
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

Bitmaps kann man mit Tkinter auch darstellen!
versuchs mal mit BitmapImage() 8)
gruß jAN
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Mr_Snede hat geschrieben:...
Gif kennt selber Transparenzen - wie du an meinem Avatar siehst.

cu Sebastian
Das wußte ich nicht. Naja, da mir 256 Farben reichen ... müßte dies dann ja gehen. Aber vorher müßte ich wissen, wie man eben solche Transparenzen zeichnet?
Was für ein Programm ist da überhaupt empfehlenswert (möglichst Umsonst, natürlich)?

jAN hat geschrieben:Bitmaps kann man mit Tkinter auch darstellen!
versuchs mal mit BitmapImage() 8)
gruß jAN
Damit hatte ich es schon Gestern versucht gehabt.
Resultat:

Code: Alles auswählen

>>> from Tkinter import *
>>> root = Tk()
>>> Bild1 = BitmapImage(file='C:\\LustigesBild\\Test.bmp')

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in -toplevel-
    Bild1 = BitmapImage(file='C:\\LustigesBild\\Test.bmp')
  File "C:\Python24\lib\lib-tk\Tkinter.py", line 3268, in __init__
    Image.__init__(self, 'bitmap', name, cnf, master, **kw)
  File "C:\Python24\lib\lib-tk\Tkinter.py", line 3165, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
TclError: format error in bitmap data
Das Bild hatte ich mittels Paint von MS erstellt und als 24 Bit-BMP abgespeichert. Geht aber leider nicht. Anscheinend paßt Python das Format nicht.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Mit gimp Transparenzen erstellen: http://gundabad.de/index.php?id=15
Damit habe ich die Transparenzen um meinen Avatar erzeugt.

cu Sebastian
BlackJack

Erwin hat geschrieben:
BlackJack hat geschrieben:Da fällt einem spontan PyGame ein, da gibt's Sprite-Objekte. Aber wenn Du nicht gerade ein Spiel programmieren möchtest ist das wohl die falsche Bibliothek. :wink:
Leider kann ich mit Englischen Seiten nicht viel Anfangen.
Und mir geht es ja nicht um echte Sprites, sondern um um Optische Darstellung dergleichen. Wenn ich eine Figur über einen Hintergrund oder Spielbrett laufen lassen will, dann soll das nicht unbedingt wie ein Block aussehen.
Dann ist PyGame vielleicht doch etwas für Dich.
BlackJack hat geschrieben:
Und noch eine Frage:
Kann es sein, daß man mit Pyhton keine Bitmaps darstellen kann?
Falls doch, welche?
Mit Tk kannst Du wirkliche Bitmaps darstellen, also wo jedes Bit wirklich angibt ob ein Punkt gesetzt ist oder nicht. Und man kann "PhotoImages" anzeigen, das sind dann Bilder mit vielen Farben. Tk kann von Haus aus mit XBM, GIF und JPEG umgehen. Ansonsten kann man eine Menge Formate mit der Python Imaging Library, kurz PIL, einlesen, verarbeiten und auch mit `Tkinter` anzeigen.
Also ich habe versuchte eine *.BMP - Datei zu laden, in den Speicher von 'PhotoImage'. Da gab es aber von der IDLE eine Fehlermeldung.[/quote]

BMP war bei meiner Liste ja auch nicht dabei. Das müsstest Du schon über PIL laden.
BlackJack hat geschrieben:Was ist denn schlecht an der Umwandlung mit GIMP? Das kann man damit eigentlich ganz gut machen.
Der verwandelt zu viele Farben um, so das daß Bild ganz anders aussieht. Bei Flächen, wo zuvor nur eine Farbe war, waren dann mehre Farben und hatte den Effekt der totalen unschärfe und komischen Schneeefekt.
Die Anzahl der Farben kann man festlegen, sogar eine Palette vorgeben wenn man möchte. Der "Schneeeffekt" heisst "dithering" und den kann man auch abschalten.
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Mr_Snede hat geschrieben:Mit gimp Transparenzen erstellen: http://gundabad.de/index.php?id=15
Damit habe ich die Transparenzen um meinen Avatar erzeugt.

cu Sebastian
Danke. Werde mir die Seite ansehen, wenn ich mehr Zeit habe.

@ BlackJack:
Im Klartext, was Bitmap, also den BMP, betrifft, diese kann man also mit Python nicht laden?
Über PIL? Einen Zusatzprogramm? Zum laden von BMP? :shock:

PyGame ist für mich nicht das richtige, weil ich kann nun mal kaum Englisch. Was soll ich dann damit, wenn ich es nicht verstehe? Wenn dann müßte es eine Deutsche Beschreibung dazu geben.

Was GIMP betrifft:
Ich habe eine einzige Fläche, also nur 1 Farbe in BMP damals hergenommen, zum Testen, weil es vorher einfach ... blöd aussah, die Umwandlung, also das Ergebnis. Und halt anhand von einer Farbe wissen wollt, was da wirklich los ist.
Und zwar sollte GIM nur umwandeln von BMP zu GIF. Sonst nichts.
Und danach waren mehre fast gleich dunkle Farben vorhanden. Und da ich das dithering bestimmt nicht angeschaltet habe, wieso auch, bei einer Umwandlung von BMP zu GIF, wird es auch nicht aktiv gewesen sein, es sei denn, es ist so voreingestellt.
Und wie gesagt: Nur Paint konnte dies noch toppen. Da war es noch schlimmer.
Aber das GIMP damals war schon recht alt. Müßte mir mal das neuste holen. Soll es ja umsonst geben, laut einen Handbuch, das ich vor kurzem gekauft habe.
Hm.. wobei, mein Cousin hatte mit der gleichen Version angeblich keine Probleme ...??

Wieviele Farben kann man eigentlich mit einen GIF darstellen?
Ist im normalfall die Umwandlung von BMP zu GIF farblich betrachtet 1 zu 1?
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erwin hat geschrieben:@ BlackJack:
Im Klartext, was Bitmap, also den BMP, betrifft, diese kann man also mit Python nicht laden?
Über PIL? Einen Zusatzprogramm? Zum laden von BMP? :shock:
Das ist ein Zusatzmodul für Python. Kriegst du vom effbot.
Erwin hat geschrieben:Wieviele Farben kann man eigentlich mit einen GIF darstellen?
Ist im normalfall die Umwandlung von BMP zu GIF farblich betrachtet 1 zu 1?
In ein GIF passen maximal 256 Farben auf einmal, deswegen ist es farblich nicht 1:1 wenn dein BMP mehr als 256 Farben hat.

Ich nutze ja sowieso lieber PNG...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

@leonidas:
wenn man mit python png´s darstellen kann ist das doch kein problem
png´s kennen transparenz
wenn man mit python pngs darstellen kann dan sag mal bitte wie

jAN
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

PNG ?
Ist das auch ein Bildformat?
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erwin hat geschrieben:PNG ?
Ist das auch ein Bildformat?
Ja, und zwar ein ziemlich gutes, siehe Portable Network Graphics. So können PNGs auch Alphakanäle beinhalten und so eine teilweise Transparenz haben.
jAN hat geschrieben:wenn man mit python png´s darstellen kann ist das doch kein problem
png´s kennen transparenz
wenn man mit python pngs darstellen kann dan sag mal bitte wie
Ich denke das geht mit Tkinter und PIL (mit PIL habe ich mal diese 1/0 Wellen zeichnen lassen, war lustig). Auch andere Toolkits wie pygame, wx, GTK und Qt unterstützen PNG von Haus aus.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

mit PIL ist das ja kein problem
ich wollte eigentlich nur wissen, ob man das auch nur mit Tkinter machen kann.
jAN
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jAN hat geschrieben:ich wollte eigentlich nur wissen, ob man das auch nur mit Tkinter machen kann.
Ich habe das Gefühl das PNG viel zu Modern für Tk(inter) ist, aber ein paar Informationen habe ich gefunden: TIP #244, was wie ein PEP aussieht, aber vermutlich noch nicht implementiert wurde und paar Tips aus dem WIki. Und paar Details zu TkPNG...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

Danke werd ich mir mal angucken
Antworten