Stimmt die Beschreibung für dtag nicht?

Fragen zu Tkinter.
Antworten
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Oder geht mein tkinter nicht richtig?

In der Beschreibung steht:
dtag(item, tag=None) [#]

Removes the given tag from all matching items. If the tag is omitted, all tags are removed from the matching items. It is not an error to give a specifier that doesn’t match any items.
Quelle: http://effbot.org/tkinterbook/canvas.htm

Doch wenn ich tag auf None setze oder weglasse, wird keinerlei tag beseitigt.
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Du hast bestimmt nur vergessen, ein kleines vollständiges lauffähiges Beispiel zu zeigen, dass dein Problem kurz illustriert. Vielleicht hast du auch vergessen noch etwas anderes aufzuzählen, was du sonst noch besonderes vorher machst, bevor die gewünschte Funktion fehlschlägt? Ob dein tkinter nicht richtig geht, hängt vor allem davon ab, was du als "richtig" ansiehst, denn da können die Meinungen ja mitunter auch einmal auseinander gehen.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Also hier werden die tags nicht beseitigt:

Code: Alles auswählen

import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root)
canvas.grid()

item = canvas.create_line(10,10,100,100,tag='mytag')
#canvas.dtag('all','mytag')
canvas.dtag('all')
print('tag:',canvas.itemcget(item,'tag'))
Wenn ich einen tag als Parameter übergebe - hier auskommentiert - dann wird er schon beseitigt.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Und ebenso ist die Beschreibung von effbot zu scale falsch: scale(self, xscale, yscale, xoffset, yoffset)
Hier ist die Reihenfolge der Parameter vertauscht. Zuerst kommt der offset und dann scale.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich bin mir sicher, dass du `dtag` falsch benutzt:
item
The item specifier (tag or id).
Das hast du eben nicht mehr kopiert. "all" scheint mir da nicht zu passen.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

@cofi 'all' ist auch ein tag. Aber egal ob ich etwas anderes reinsetze auch die item_id, wenn ich als zu löschenden tag None angebe oder den Parameter leer lasse, dann löscht bei mir dtag überhaupt keinen tag. Ist das bei Euch anders? Hat ein Programmierer diese Methode vermurkst, bei meiner tkinter Version, dass er gedacht hat, None heißt nichts? Nur gibt das keinen Sinn, wenn dtag dann nichts macht.

Wenn ich einen zu löschenden tag reinschreibe, dann wird dieser auch gelöscht, nur alle löschen mit None oder leer lassen geht nicht.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Man sollte lieber bei NEW MEXICO TECH die Beschreibungen anschauen. Die sind ziemlich vollständig und auch ziemlich zuverlässig: http://infohost.nmt.edu/tcc/help/pubs/t ... thods.html
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

An dem zweiten Parameter weglassen oder None ist doch etwas dran, aber falsch bei effbot beschrieben. Hier geht es nicht um alle tags für items zu löschen, sondern alle tags eines Namens zu löschen.

Statt: canvas.dtag('thistag','thistag')
genügt auch: canvas.dtag('thistag')
Antworten