Nun habe ich das Programm - sowohl als py-Skript als auch als exe-File (mittels pyinstaller erstellt) auf verschiedenen Systemen getestet und auf einem Win98-Rechner Unerfreuliches erlebt. Weil Bilder mehr als Worte sagen:
Oben (grün) das, was herauskommen sollte. Funktioniert auch unter Linux, Win XP, Win NT. Unten (rot) das, was ich auf dem Win98-Rechner zu sehen bekomme (die Farbe habe ich jetzt extra geändert - die ist natürlich gleich geblieben). An der Python-Version kann es nicht liegen - die ist ja bei der exe-Fassung mit eingebunden.
Das Problem scheint zu sein, dass auf diesem Rechner die Option capstyle (joinstyle ebenfalls) der create_line()-Methode nicht ausgewertet werden - es wird immer mit dem Wert "round" gearbeitet, egal wie ich diese Werte belege. Zwar liefert mir ein canvas.itemcget("capstyle") den Wert "butt" zurück (das ist der default-Wert, der die - von mir gewünschten - abgeschnittenen Enden produziert), aber gezeichnet werden die abgerundeten (auch wenn ich capstyle manuell auf "butt" setze).
Was ich nun gerne wüsste: Liegt es am Betriebssystem als solchem oder an der konkreten Konfiguration gerade dieses Rechners? Und: Wie sieht das auf anderen Rechnern aus.
Wäre nett, wenn der ein oder andere das folgende Skript mal ausführen und Rückmeldung geben könnte (herauskommen sollte die obere, grüne Fassung, mit abgeschnittenen Enden, so dass eine offene Kanalverbindung entsteht).
Code: Alles auswählen
import Tkinter as tk
root = tk.Tk()
canv = tk.Canvas(root,width=300,height=120,bg="white")
canv.pack()
canv.create_line(20,20,280,20,width=16,fill="#333")
canv.create_line(20,20,280,20,width=12,fill="#0f0")
canv.create_line(150,26,150,100,width=16,fill="#333")
canv.create_line(150,26,150,100,width=12,fill="#0f0")
root.mainloop()