Fehldarstellung von Linien auf Canvas

Fragen zu Tkinter.
Antworten
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ich benötige für eine graphische Darstellung eine Art Kanalsystem. Das Zeichnen von Kanälen habe ich mittels der create_line()-Methode realisiert - klappt alles wunderbar.

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:

Bild

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()
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Bei mir erscheint's so, wie es sein soll:
butt als default,
round bei capstyle='round'

Ubuntu Hardy, Python 2.5.2

:wink:
yipyip
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Bei mir ist die Ausgabe auch korrekt.

Code: Alles auswählen

Das ist meine Umgebung:
=======================
sys.version: 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)]
sys.platform: win32
sys.winver: 2.4
MfG
HWK
tommes
User
Beiträge: 3
Registriert: Samstag 26. Juli 2008, 14:43

Hallo,

ausprobiert auf einem Rechner mit Betriebssystem Windows Millenium
auf folgender Python-Version ergibt denselben Fehler:

(analog Deiner "roten" Darstellung)

Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.

Viele Grüße
Thomas
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Danke euch schonmal für eure Mühe!
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

Funktioniert wie erwartet unter Ubuntu Gutsy Gibbon und Python 2.5.1.
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
Antworten