Das Problem ist, dass das Fenster grundsätzlich angezeigt werden soll und erst wenn c = 1 gesetzt wird, abgeschlatet werden soll. Und wenn ich es so einrichte, dass er das Fenster nur anzeigt solange c ungleich null ist, funktioniert es auch nicht. Er zeigt dann das Fenster immer noch an.
Dass da so oft a1 steht, liegt daran, dass das Fenster a1 heißt. Alle anderen entsprechenden Variablen beziehen sich also in irgendeinerweise auf das Fenster.
Ich hab bis jetzt immer nur Codeschnipsel gezeigt, weil das ganze Programm über 900 Zeilen lang ist und die entsprechenden Zeilen oft weit auseinander stehen, deswegen hab ich dir mal die entsprechenden Codezeilen zusammengebastelt:
Code: Alles auswählen
import Tkinter as tk
f = tk.Tk()
f.geometry('1000x700')
f.title('Schach')
f.iconbitmap('Schach_Icon.ico')
c = 0
a = 0
if a == 0:
bilda1 = tk.PhotoImage(file='leer.gif')
currentfigur = tk.PhotoImage(file='leer.gif')
leer = tk.PhotoImage(file='leer.gif')
bild = tk.PhotoImage(file='Schach700.gif')
TurmW = tk.PhotoImage(file='Turm.gif')
l = tk.Label(f, image=bild, relief=tk.GROOVE)
l.place(x=1, y=1)
def a1 (figa1):
if c == 0:
la1 = tk.Label(f, image=figa1, relief=tk.GROOVE)
la1.place(x=18, y=631)
global bilda1
bilda1 = figa1
# Hier soll jetzt la1 entfernt werden
def a2 (figa2):
la1 = tk.Label(f, image=figa2, relief=tk.GROOVE)
la1.place(x=18, y=544)
global bilda2
bilda2 = figa2
if a == 0:
a1 (TurmW)
Zuganfang = tk.Text(f, height=39, width=15, relief=tk.GROOVE, background='black', foreground='white')
Zuganfang.place(x=720, y=60)
def show(self):
Anfangskoordinate = ZuganfangEingabe.get()
Zuganfang.insert(tk.END, Anfangskoordinate + "\n")
ZuganfangEingabe.delete(0, tk.END)
ZugendeEingabe.focus()
a = 1
if Anfangskoordinate == 'a1':
global currentfigur
currentfigur = bilda1
global c
c = 1
a1 (leer)
def showend(self):
Endkoordinate = ZugendeEingabe.get()
Zugende.insert(tk.END, Endkoordinate + "\n")
ZugendeEingabe.delete(0, tk.END)
ZuganfangEingabe.focus()
if Endkoordinate == 'a2':
a2 (currentfigur)
ZuganfangEingabe = tk.Entry(f, width=10)
ZuganfangEingabe.place(x=720, y=1)
ZuganfangEingabe.focus()
ZuganfangEingabe.bind(sequence = '<Return>', func = show)
ZugendeEingabe = tk.Entry(f, width=10)
ZugendeEingabe.place(x=865, y=1)
ZugendeEingabe.bind(sequence = '<Return>', func = showend)
Zugende = tk.Text(f, height=39, width=15, relief=tk.GROOVE, background='black', foreground='white')
Zugende.place(x=865, y=60)
Zuganfang_Uberschrift = tk.Label(f, text='Zugstartfeld eingeben: ', relief=tk.GROOVE, background='black', foreground='white')
Zuganfang_Uberschrift.place(x=720, y=41)
Zugende_Uberschrift = tk.Label(f, text='Zugendfeld eingeben: ', relief=tk.GROOVE, background='black', foreground='white')
Zugende_Uberschrift.place(x=865, y=41)
f.mainloop()
Dieser Code ist ein Auszug, der das Programm im Miniformat darstellt. Leider kann ich hier nichts anhängen, sonst würde ich dir die Originalbilder mitliefern.
Und falls du befürchten solltest, dass ich ein richtiges Schachprogramm schreiben wollte, sei beruhigt, diese Programm soll nur Züge ausführen können, die ich eingebe. Ich werde ihm keine Schachregeln oder KI einprogrammieren. Nur, dass du nicht glaubst ich wäre jemand, der sich son Riesenprojekt vornimmt und dann irgendwann aufgibt, weil er sein Ziel nicht schnell genug erreicht.
Ich weiß auch, dass die place-Befehle nicht so schön sind, nur mit den Methoden, die ich zu erst ausprobiert habe und die zunächst auch funktioniert haben, brachten mich nicht weit, so dass ich erst mal wieder place-Befehle verwendet habe. Ich muss mich einfach nochmal intensiver mit dem Layoutmanager auseinandersetzen, das steht weit oben auf der Prioritätenliste.
Ich hoffe, dass das weiterhilft.
MfG
Arachnid