colors in tkinter(fill=???)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

colors in tkinter(fill=???)

Beitragvon Zack » Montag 5. Mai 2008, 12:30

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.
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Montag 5. Mai 2008, 12:33

Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

Beitragvon Zack » Montag 5. Mai 2008, 13:20

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Montag 5. Mai 2008, 13:54

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 ...
BlackJack

Beitragvon BlackJack » Montag 5. Mai 2008, 14:05

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()
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

Beitragvon Zack » Montag 5. Mai 2008, 14:12

ah, super danke euch beiden. Jetzt läuft's wie geölt.
Mit freundlichem Gruß
Zack

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder