Also ich versteh's mal wieder nicht.
Anscheinend darf man für die Tags keine
Zahlenstrings benutzen:
(Experimentiercode)
Code: Alles auswählen
#!/usr/bin/env python
####
import Tkinter as tk
####
class Gui(object):
def __init__(self, width=400, height=400):
self.root = tk.Tk()
self.canvas = tk.Canvas(self.root, width=width, height=height, bg='white',
highlightthickness=None)
self.canvas.pack(fill=tk.BOTH, expand=True)
self.button = tk.Button(self.root, text='Change', command=self.show)
self.button.pack()
self.state = 1
self.item1 = self.canvas.create_rectangle(33, 33, 99, 99, fill='red')
self.canvas.itemconfig(self.item1, tags=('a', 'x', '42'))
self.item2 = self.canvas.create_rectangle(222, 222, 333, 333, fill='yellow')
self.canvas.itemconfig(self.item2, tags=('b', 'x', '42'))
print self.item1, self.item2
print self.canvas.find_withtag('x')
print self.canvas.find_withtag('42')
print self.canvas.gettags(self.item1)
print self.canvas.gettags(self.item2)
def show(self):
self.state ^= 1
# mit 'a', 'b' oder 'x' erwartetes Verhalten, mit '42' ???
self.canvas.itemconfig('x', fill=('black', 'grey')[self.state])
def run(self):
self.root.mainloop()
####
if __name__ == '__main__':
Gui().run()
Mit den Tags 'a', 'b' und 'x' funktioniert es, aber der Tag '42'
wird nicht erkannt.
Liegt das am Tcl?