Resize event

Fragen zu Tkinter.
Antworten
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Dienstag 11. März 2008, 12:05

Ich möchte gerne nach dem Ändern meines Tk Windows eine Aktion ausführen. Ich konnte aber nach vielem Suchen und Ausprobieren nichts finden was es mir ermöglicht das zu tun.

Ich kann zwar mit

widget.bind('<Configure>', resizeAction)

Eine Aktion ausführen, das nützt mir aber soweit nix als dass ich das dann ständig machen müsste, da dann meine resizeAction ständig aufgerufen wird.

Weiss eventuell irgendjemand wie ich Tk dazu bringe mir ne Nachricht zu schicken nachdem der Resize Vorgang abgeschlossen ist?

Idealerweise wäre es ja wenn Tk den Mausklick auf den Window Rand weitergeben würde. Dann könnte ich einfach den ButtonRelease-1 abfragen. Leider wird dieser Event jedoch am Rand nicht weitergegeben.

Für jegliche Hilfe wäre ich überaus dankbar.
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Dienstag 11. März 2008, 21:13

Hallo haggi

Ich habe so etwas gefunden !

Code: Alles auswählen

import Tkinter as tk

def callback(event):
    print 'Groesse geaendert'
    
fenster = tk.Tk()
fenster.bind("<Configure>", callback)
fenster.mainloop()
edit !

Die Lösung hatest du ja schon - habe es versucht mit einem Umweg zu lösen. Hilft dir eventuell !

Code: Alles auswählen

import Tkinter as tk


class Fenster(object):
    def __init__(self):
        self.weite = 108
        self.hoehe = 200
        self.gui()
    def gui(self):
        
        self.fenster = tk.Tk()
        self.fenster.geometry('%dx%d' % (self.weite, self.hoehe))
        self.fenster.bind("<Enter>", self.callback)
        self.fenster.mainloop()
        
    def callback(self, event):
        weite_neu = self.fenster.winfo_width()
        hoehe_neu = self.fenster.winfo_height()
        if self.weite != weite_neu:
            print 'weite geaendert'
            self.weite = weite_neu
        
        if self.hoehe != hoehe_neu:
            print 'hoehe geaendert'
            self.hoehe = hoehe_neu
    
Fenster()

gruß frank
haggi
User
Beiträge: 42
Registriert: Mittwoch 27. Februar 2008, 10:18
Kontaktdaten:

Mittwoch 19. März 2008, 15:09

Danke für den Tipp. Das hilft schon mal weiter.

Ich habs nun erst mal über <configure > gemacht, dann wird das nämlich schon ausgeführt wärend man das Fenster vergrössert. Dann wird das zwar recht oft aufgerufen, aber es klappt ohne grosse Probleme.
Antworten