Programm neustarten
Verfasst: Freitag 28. August 2009, 21:07
Hallo Leute
ich habe ein Programm, wo der Anwender nach verschiedenen Eingaben das Programm neustarten sollte.
Hier ein Beispiel:
Abgesehen von den Entrys funktioniert das ganz zufriedenstellend.
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.
Muss ich jetzt mein Programm als Klasse umschreiben?
(Wäre ... schade, da das Neustarten die letzte Funktion ist, die noch zu ergänzen wäre
)
Kennt jemand noch eine andere Möglichkeit?
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?