ich habe ein Programm, wo der Anwender nach verschiedenen Eingaben das Programm neustarten sollte.
Hier ein Beispiel:
Code: Alles auswählen
import Tkinter as tk
from random import random, sample
def entry_erstellen(e):
feld = tk.Entry(win)
feld.pack(padx=5)
felder.append(feld)
feld.insert('end', random())
canvas.create_rectangle(sample(range(100), 4), fill='red')
def neu_starten1(e):
canvas.delete('all')
#entrys entfernen
win = tk.Tk()
felder = []
neustart = tk.Button(win, text='Neu starten')
neustart.pack(side='top', padx=10, pady=5)
tk.Widget.bind(neustart, '<1>', neu_starten1)
neu = tk.Button(win, text='Neues Feld')
neu.pack(padx=10, pady=5)
tk.Widget.bind(neu, '<1>', entry_erstellen)
canvas = tk.Canvas(win, width=100, height=100, bg='white')
canvas.pack(pady=20, padx=25)
win.mainloop()
Allerdings finde ich das bei größeren Programmen nicht sinnvoll, alles "von Hand" zu löschen. Ich habe mir überlegt das ganze (also erstellen des Fenster usw.) als Prozedur zu machen:
(hab allerdings nur die Möglichkeit gefunden, das ganze als Klasse zu schreiben, da ich sonst ´´global`` einbringen müsste.
Code: Alles auswählen
import Tkinter as tk
from random import random, sample
class Test:
def __init__(self):
self.win = tk.Tk()
self.felder = []
neustart = tk.Button(self.win, text='Neu starten')
neustart.pack(side='top', padx=10, pady=5)
tk.Widget.bind(neustart, '<1>', self.neu_starten2)
neu = tk.Button(self.win, text='Neues Feld')
neu.pack(padx=10, pady=5)
tk.Widget.bind(neu, '<1>', self.entry_erstellen)
self.canvas = tk.Canvas(self.win, width=100, height=100, bg='white')
self.canvas.pack(pady=20, padx=25)
self.win.mainloop()
def entry_erstellen(self, e):
feld = tk.Entry(self.win)
feld.pack(padx=5)
self.felder.append(feld)
feld.insert('end', random())
self.canvas.create_rectangle(sample(range(100), 4), fill='red')
def neu_starten1(self, e):
self.canvas.delete('all')
#entrys entfernen
def neu_starten2(self, e):
self.win.destroy()
self.__init__()
Test()
(Wäre ... schade, da das Neustarten die letzte Funktion ist, die noch zu ergänzen wäre )
Kennt jemand noch eine andere Möglichkeit?