Farbübergang??

Fragen zu Tkinter.
Antworten
meister56
User
Beiträge: 57
Registriert: Dienstag 23. Dezember 2008, 22:54

Kann man z.B. bei einen normalen blauen Canvasfenster einen Farbübergang einbauen??? Ich meine so was wie von dunkelblau zu hellblau oder so??!
Hab nur Interesse ob so was mit python überhaupt möglich ist!

gruß meister56
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

meister56 hat geschrieben:Kann man z.B. bei einen normalen blauen Canvasfenster einen Farbübergang einbauen??? Ich meine so was wie von dunkelblau zu hellblau oder so??!
Hab nur Interesse ob so was mit python überhaupt möglich ist!
Ja.
meister56
User
Beiträge: 57
Registriert: Dienstag 23. Dezember 2008, 22:54

Und wie geht so etwas??
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo meister56

Hier ein ein Versuchsskript um einen Farbverlauf auf einer Canvas zu erzeugen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

#~~ Skriptname tk_color_fading_01.py (wuf)

#~~ Versuch: Horizontaler Farbverlauf auf einer Canvas mit Hilfe
#   eines PhotoImage-Objektes

import Tkinter as tk

root = tk.Tk()

data = list(xrange(256)) # 0..255

reverse_fading = False

if reverse_fading:
    data.reverse()

#~~ Erzeugt ein PhotoImage-Objekt
photo_image = tk.PhotoImage(width=len(data), height=1)

fade_color = 'dark_red'

format = "#%02x%02x%02x"
fade_function = {
    'dark_blue'  : lambda v: format % (0, 0, v),
    'dark_green' : lambda v: format % (0, v, 0),
    'dark_red'   : lambda v: format % (v, 0, 0),
    'brite_blue' : lambda v: format % (v, v, 255),
    'brite_green': lambda v: format % (v, 255, v),
    'brite_red'  : lambda v: format % (255, v, v),
    }.get(fade_color, lambda v: format % (0, 255, v))

#~~ Färbt die Fläche des PhotoImage-Objektes ein
photo_image.put((tuple(map(fade_function, data)),))

#~~ Skaliert die Fläche des PhotoImage-Objektes
photo_image = photo_image.zoom(4, 300)

#~~ Ermittelt die Breite & Höhe des PhotoImages-Objektes
image_width = photo_image.width()
image_height = photo_image.height()

#~~ Canvas für die Aufnahme des Photo-Images (Geometrie ist abhängig von der
#   Breite und Höhe des PhotoImage-Objektes)
canvas = tk.Canvas(root, bd=0, highlightthickness=0, width=image_width,
    height=photo_image.height())
canvas.pack()

#~~ Platziert das PhotoImage-Objekt auf die Canvas
image = canvas.create_image(0, 0, image=photo_image, anchor='nw')

root.mainloop()
Gruss wuf :wink:
Take it easy Mates!
meister56
User
Beiträge: 57
Registriert: Dienstag 23. Dezember 2008, 22:54

ok danke!

gruß meister56
Antworten