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

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: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Montag 5. Mai 2008, 12:33

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

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

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

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

Montag 5. Mai 2008, 14:12

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