Alle multiple Fenster wieder schliessen

Fragen zu Tkinter.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
gibt es in tkinter einen befehl, mit dem alle geöffneten multi-fenster wieder
geschlossen werden können???

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8

from Tkinter import *

root = Tk()
root.title('DMD-DATA.soft')
root.geometry('100x100+350+50')

def bvUebersicht():

    row = 0
    index = range(3)
    indexes = len(index) -1

    def shutAll(row,indexes):
        print row
        anzahlFenster = range(indexes+1)
        print anzahlFenster
        #fensterWin4.destroy(all) --> das wär echt toll :)

    for gola in index:

        fensterWin4 = Tk()
        fensterWin4.title('DMD-DATA.soft')
        fensterWin4.geometry('200x200+700+80')

        if row != index:
            Button(fensterWin4,text='Alle schliessen', command=lambda:shutAll(row,indexes),).grid(row=5, column=3, columnspan=2)

        Button(fensterWin4,text='Schliessen' if row == indexes else 'Weiter',command=fensterWin4.destroy,).grid(row=7, column=3, columnspan=2)

        row += 1

b_rw4 = Button(root, text = ' BUTTON ', command=bvUebersicht)
b_rw4.grid(row=6, column=4)

root.mainloop()
Zuletzt geändert von Anonymous am Freitag 1. Januar 2016, 19:43, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@DMD-OL: Du müsstest Dir die Fensterobjekte beispielsweise in einer Liste merken um dann später auf ihre `destroy()`-Methode zugreifen zu können.

Das Programm ist fehlerhaft weil es nur ein `Tk`-Exemplar zur gleichen Zeit geben darf. Das ist *das* Hauptfenster. Da hängt auch der Tk/Tcl-Interpreter dran. Wenn man davon mehrere erzeugt können komische Sachen bis hin zu Programmabstürzen passieren. Zusätzliche Fenster kann man mit dem Typ `Toplevel` erzeugen.

Lokale Funktionen sind hier keine Lösung — bei GUI-Programmierung kommt man nicht um objektorientierte Programmierung (OOP) herum.

Warum fangen Deine Grid-Koordinaten nicht bei Zeile und Spalte 0 an? Falls Du leere Zeilen und Spalten als Abstand missbrauchst: Das funktioniert nicht weil nicht garantiert ist das durch leere Zeilen und Spalten Platz verbraucht wird. Das macht also nur den Quelltext verwirrender.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

vielen dank...
aber wie kann ich denn dem tkinter window in einem loob einen namen verpassen???
geht das mit var = StringVar?
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

DID IT!
THX A LOT!
;)
Antworten