Seite 1 von 1

colors in tkinter(fill=???)

Verfasst: Montag 5. Mai 2008, 12:30
von Zack
Hi,
ich konnte mit google leider nicht viel finden ebenso im Manual.

Und zwar wollte ich gerne mit der Funktion .draw_line(fill=???) aus tkinter verschiedene farbige Linien zeichnen. Nun würde mich natürlich brennend interessieren, welche Farben denn überhaupt zur Verfügung stehen.

Ich hoffe ihr könnt mir weiterhelfen oder einen kleinen Hinweis geben wonach ich suchen muss.
Mit freundlichem Gruß
Zack

ps: ich sehe gerade, dass gehört wahrscheinlich eher in die Kategorie "Tkinter". Wäre nett, wenn es jemand verschieben könnte. Das hab ich übersehen.

Verfasst: Montag 5. Mai 2008, 12:33
von EyDu

Verfasst: Montag 5. Mai 2008, 13:20
von Zack
Super danke eydu,
nun bin ich leider direkt beim nächsten Problem.
Ich habe eine Anzahl von Linien die ich gerne in einer for-schleife abarbeiten würde.
In der for-Schleife generiere ich immer ein Array (zb: [1,1,2,2,4,4,8,8])
Dieses würde ich nun aber gerne mit verschiedenen Farben zusammen der tkinter.draw_line() funktion mitgeben.
zb (stark vereinfacht):

Code: Alles auswählen

import Tkinter as tk
win = tk.Tk()
win = tk.Canvas(win, width=200, height=200, bg='white')
win.pack()

colors = ['red','green','blue','yellow']
c = 0

for i in [[11,11,22,22],[33,33,44,44],[55,55,66,66]]:
    #i.append("fill="+colors[c])
    win.create_line(*i,fill=color[c])                   #hier tritt leider immer ein Fehler auf. auch mit der auskommentierten Variante
    c += 1
    
tk.mainloop()
Leider schlugt er das fill einfach nicht. Auch nicht, wenn ich es vorher mit in das Array eingebunden habe alla: i.append("fill="+colors[c])
Ich hoffe ihr habt auch hierfür eine kleine Idee parat.
Mit freundlichem Gruß
Zack

Verfasst: Montag 5. Mai 2008, 13:54
von numerix
Zunächst solltest du über Zeile 2-4 nochmal nachdenken, auch wenn das nicht den Fehler produziert. Das ist sicher so nicht sinnvoll.

Damit es klappt, musst du in Zeile 11 den '*' weglassen.

Dann geht es aber immer noch nicht, weil die Variable color in Zeile 11 nicht definiert ist ...

Verfasst: Montag 5. Mai 2008, 14:05
von BlackJack
Das ``*``-Argument darf erst nach Schlüsselwortargumenten kommen:

Code: Alles auswählen

import Tkinter as tk

def main():
    root = tk.Tk()
    win = tk.Canvas(root, width=200, height=200, bg='white')
    win.pack()
    
    colors = ['red', 'green', 'blue', 'yellow']
    line_coordinates = [[11, 11, 22, 22], [33, 33, 44, 44], [55, 55, 66, 66]]
    for color, line_coords in zip(colors, line_coordinates):
        win.create_line(fill=color, *line_coords)
    
    tk.mainloop()

if __name__ == '__main__':
    main()

Verfasst: Montag 5. Mai 2008, 14:12
von Zack
ah, super danke euch beiden. Jetzt läuft's wie geölt.
Mit freundlichem Gruß
Zack