repaint bei Tkinter

Fragen zu Tkinter.
Antworten
micha

Dienstag 17. August 2004, 09:31

hi,

wie kann ich bei Tkinter u. Canvas so eine art repaint machen,
das heißt bei jedem neuen zeichnen mit create_..., das canvas
loeschen?
gibt es da eine einfache möglichkeit?
bisher habe ich es so probiert:

Code: Alles auswählen


def __init__(self):
    ...
    self.malen = None
    ...
def myPaint(self,event):
    canvas = event.widget
    if self.malen: canvas.delete(self.malen)
    t1 = canvas.create_text(0,0,meinText)
    self.malen = t1
    ...
ich möchte mehrere objekte erstellen und würde dann viele solcher variablen und abfragen brauchen.
gibt es da vieleicht einen einfachen weg ?
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Dienstag 17. August 2004, 09:48

Hi!

Du könntest tags verwenden:

Code: Alles auswählen

from Tkinter import *

def clear_it():
	c.delete("loeschbar")

root = Tk()
c = Canvas()
c.pack()
x,y = 10,10
for i in range(10):
	c.create_text(x,y,text=i,tags="loeschbar")
	x+=10
	y+=10
c.create_text(100,200,text="Diesen Text nicht loeschen",tags="unloeschbar")

Button(text="Clear",command=clear_it).pack()
root.mainloop()
Alles mit dem tag "loeschbar" wird durch clear_it geloescht, alles andere nicht.

Gruß, mawe
micha

Dienstag 17. August 2004, 10:12

danke mave,
werde ich gleich mal probieren.

ich habe noch noch eine frage zum abfragen von Canvas-groeße.
setze ich Tk() mit geometry(500x500) auf eine größe und das Canvas
mit pack(fill=BOTH,expand=1).
beim abfragen hat das Canvas genau die selbe größe wie das
Tk(), obwohl es doch etwas kleiner sein müßte wegen der fehlenden
titel-leiste?
gibt es dafür eine erklärung?

gruß micha
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Dienstag 17. August 2004, 12:45

Hi micha,

mit geometry(...) stellst Du die innere Grösse des Fensters ohne Rahmen ein. Ist auch irgendow klar, je nach Platform und Fenstermanager können Fensterrahmen und Titelleisten ja unterschiedlich breit sein.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
micha

Dienstag 17. August 2004, 14:28

danke Dookie,

mir war das irgend wie nicht so klar.
ich beschäftige mich erst seit kurzem mit python.
bei java ist das nämlich nicht so, da gibts außen Frame
und alles andere was drauf kommt ist kleiner.

gibt es eine zu empfehlende Tkinter-Doku ?

viele Grüße
micha
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Dienstag 17. August 2004, 14:57

Hi!
micha hat geschrieben: gibt es eine zu empfehlende Tkinter-Doku ?
Schau mal hier.

Gruß, mawe
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Dienstag 17. August 2004, 15:04

ich schau meistens bei http://www.pythonware.com/library/tkint ... /index.htm nach


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Antworten