starke Performanceprobleme nach längeren ausführen des Codes

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Dionysos86
User
Beiträge: 1
Registriert: Dienstag 15. April 2014, 19:17

Einen wunderschönen Abend wünsche ich euch

ein paar Worte vorneweg
ich habe vor etwa 2- 3 Wochen damit angefangen mich mit Python zu beschäftigen, für den Einstig nutze ich das Buch „Einstieg in Python“ von Thomas Theis bin recht zufrieden mit diesem Buch.
Komme jetzt aber an Probleme die in diesem Buch nicht beschrieben sind bzw. deren Lösung für mich in diesem Buch nicht erkennbar sind.

Explizit arbeite ich gerade an einem Programm zum steuern von Signalen einer Modelleisenbahn, das Programm nutzte ich um eine GUI zur Verfügung zustellen und meine Daten an einen Arduino zu senden. Das Programm ist meiner Meinung soweit fertig, sendet seine „Befehle“ auch ordnungsgemäß an mein Arduino. Jedoch habe ich nach kurzer Zeit ein extremes Performanceproblem . Gelingt, wenn man ca. 10 mal den Button "alle Signale auf Rot setzten" verwendet. Laut Taskmanager hat das Programm eine CPU Last von 1-2%, auch der verbrauchte Arbeitsspeicher mit nicht einmal 7 MB erachte ich als normal.
Zuerst hatte ich die Vermutung, dass in den Funktionen signal01 bis signal16 das Problem liegt, da ich dort meine Button ständig mit einer neuen Farbe erstelle. Diese habe ich einmal auskommentiert, jedoch trat das Problem immer noch auf. Aus mangelnder Erfahrung kann ich mir bei diesem Problem nicht mehr selber helfen, da für mich das Problem in keinster Weise ersichtlich ist.
Ich würde mich freuen, wenn sich jemand mal meinen Quellcode angucken könnte und mir konstruktive Rückmeldung geben würde.
Des Weiteren ist mir bewusst, dass dieser Code extrem weit von einem optimalen Code ist. Ich habe so viele Funktionen geschrieben, da ich immer einen Fehler bekommen habe, als ich die Funktionen mit Parametern und deren Aufruf bei den Buttons hinterlegt habe. Aus diesem Grund habe ich für jedes Signal eine eigene Funktion geschrieben. Ein kleines Codebeispiel für dieses Problem würde mir schon ausreichen.
Ich bedanke mich schon mal im voraus für eure Hilfe

ps: ist es in Ordnung, wenn ich den ganzen Quellcode so wie hier anhenge??

Code: Alles auswählen

# Signal = True -> Grün
# Signal = False -> Rot

import tkinter
import time
import serial

boolSignal01 = False
boolSignal02 = False
boolSignal03 = False
boolSignal04 = False
boolSignal05 = False
boolSignal06 = False
boolSignal07 = False
boolSignal08 = False
boolSignal09 = False
boolSignal10 = False
boolSignal11 = False
boolSignal12 = False
boolSignal13 = False
boolSignal14 = False
boolSignal15 = False
boolSignal16 = False

print("alle Signale auf Rot gestellt")

main = tkinter.Tk()

def ende():
    main.destroy()

def signal01():
    global boolSignal01
    if boolSignal01 == False:  
        boolSignal01 = True
    else:
        boolSignal01 = False
    if boolSignal01 == True:
        buttonSignal01 = tkinter.Button(main, text = "Signal1", fg="Green", command = signal01)
        buttonSignal01.place(x=60, y=20)
        print("Signal 1 auf Grün gestellt")
    else:
        buttonSignal01 = tkinter.Button(main, text = "Signal1", fg="Red", command = signal01)
        buttonSignal01.place(x=60, y=20)
        print("Signal 1 auf Rot gestellt")
    sentInformation()
        
def signal02():
    global boolSignal02
    if boolSignal02 == False:  
        boolSignal02 = True
    else:
        boolSignal02 = False
    if boolSignal02 == True:
        buttonSignal02 = tkinter.Button(main, text = "Signal2", fg="Green", command = signal02)
        buttonSignal02.place(x=120, y=20)
        print("Signal 2 auf Grün gestellt")
    else:
        buttonSignal02 = tkinter.Button(main, text = "Signal2", fg="Red", command = signal02)
        buttonSignal02.place(x=120, y=20)
        print("Signal 2 auf Rot gestellt")
    sentInformation()

def signal03():
    global boolSignal03
    if boolSignal03 == False:  
        boolSignal03 = True
    else:
        boolSignal03 = False
    if boolSignal03 == True:
        buttonSignal03 = tkinter.Button(main, text = "Signal3", fg="Green", command = signal03)
        buttonSignal03.place(x=60, y=50)
        print("Signal 3 auf Grün gestellt")
    else:
        buttonSignal03 = tkinter.Button(main, text = "Signal3", fg="Red", command = signal03)
        buttonSignal03.place(x=60, y=50)
        print("Signal 3 auf Rot gestellt")
    sentInformation()

def signal04():
    global boolSignal04
    if boolSignal04 == False:  
        boolSignal04 = True
    else:
        boolSignal04 = False
    if boolSignal04 == True:
        buttonSignal04 = tkinter.Button(main, text = "Signal4", fg="Green", command = signal04)
        buttonSignal04.place(x=120, y=50)
        print("Signal 4 auf Grün gestellt")
    else:
        buttonSignal04 = tkinter.Button(main, text = "Signal4", fg="Red", command = signal04)
        buttonSignal04.place(x=120, y=50)
        print("Signal 4 auf Rot gestellt")
    sentInformation()

def signal05():
    global boolSignal05
    if boolSignal05 == False:  
        boolSignal05 = True
    else:
        boolSignal05 = False
    if boolSignal05 == True:
        buttonSignal05 = tkinter.Button(main, text = "Signal5", fg="Green", command = signal05)
        buttonSignal05.place(x=60, y=80)
        print("Signal 5 auf Grün gestellt")
    else:
        buttonSignal05 = tkinter.Button(main, text = "Signal5", fg="Red", command = signal05)
        buttonSignal05.place(x=60, y=80)
        print("Signal 5 auf Rot gestellt")
    sentInformation()

def signal06():
    global boolSignal06
    if boolSignal06 == False:  
        boolSignal06 = True
    else:
        boolSignal06 = False
    if boolSignal06 == True:
        buttonSignal06 = tkinter.Button(main, text = "Signal6", fg="Green", command = signal06)
        buttonSignal06.place(x=120, y=80)
        print("Signal 6 auf Grün gestellt")
    else:
        buttonSignal06 = tkinter.Button(main, text = "Signal6", fg="Red", command = signal06)
        buttonSignal06.place(x=120, y=80)
        print("Signal 6 auf Rot gestellt")
    sentInformation()

def signal07():
    global boolSignal07
    if boolSignal07 == False:  
        boolSignal07 = True
    else:
        boolSignal07 = False
    if boolSignal07 == True:
        buttonSignal07 = tkinter.Button(main, text = "Signal7", fg="Green", command = signal07)
        buttonSignal07.place(x=60, y=110)
        print("Signal 7 auf Grün gestellt")
    else:
        buttonSignal07 = tkinter.Button(main, text = "Signal7", fg="Red", command = signal07)
        buttonSignal07.place(x=60, y=110)
        print("Signal 7 auf Rot gestellt")
    sentInformation()

def signal08():
    global boolSignal08
    if boolSignal08 == False:  
        boolSignal08 = True
    else:
        boolSignal08 = False
    if boolSignal08 == True:
        buttonSignal08 = tkinter.Button(main, text = "Signal8", fg="Green", command = signal08)
        buttonSignal08.place(x=120, y=110)
        print("Signal 8 auf Grün gestellt")
    else:
        buttonSignal08 = tkinter.Button(main, text = "Signal8", fg="Red", command = signal08)
        buttonSignal08.place(x=120, y=110)
        print("Signal 8 auf Rot gestellt")
    sentInformation()

def signal09():
    global boolSignal09
    if boolSignal09 == False:  
        boolSignal09 = True
    else:
        boolSignal09 = False
    if boolSignal09 == True:
        buttonSignal09 = tkinter.Button(main, text = "Signal9  ", fg="Green", command = signal09)
        buttonSignal09.place(x=390, y=20)
        print("Signal 9 auf Grün gestellt")
    else:
        buttonSignal09 = tkinter.Button(main, text = "Signal9  ", fg="Red", command = signal09)
        buttonSignal09.place(x=390, y=20)
        print("Signal 9 auf Rot gestellt")
    sentInformation()

def signal10():
    global boolSignal10
    if boolSignal10 == False:  
        boolSignal10 = True
    else:
        boolSignal10 = False
    if boolSignal10 == True:
        buttonSignal10 = tkinter.Button(main, text = "Signal10", fg="Green", command = signal10)
        buttonSignal10.place(x=450, y=20)
        print("Signal 10 auf Grün gestellt")
    else:
        buttonSignal10 = tkinter.Button(main, text = "Signal10", fg="Red", command = signal10)
        buttonSignal10.place(x=450, y=20)
        print("Signal 10 auf Rot gestellt")
    sentInformation()

def signal11():
    global boolSignal11
    if boolSignal11 == False:  
        boolSignal11 = True
    else:
        boolSignal11 = False
    if boolSignal11 == True:
        buttonSignal11 = tkinter.Button(main, text = "Signal11", fg="Green", command = signal11)
        buttonSignal11.place(x=390, y=50)
        print("Signal 11 auf Grün gestellt")
    else:
        buttonSignal11 = tkinter.Button(main, text = "Signal11", fg="Red", command = signal11)
        buttonSignal11.place(x=390, y=50)
        print("Signal 11 auf Rot gestellt")
    sentInformation()

def signal12():
    global boolSignal12
    if boolSignal12 == False:  
        boolSignal12 = True
    else:
        boolSignal12 = False
    if boolSignal12 == True:
        buttonSignal12 = tkinter.Button(main, text = "Signal12", fg="Green", command = signal12)
        buttonSignal12.place(x=450, y=50)
        print("Signal 12 auf Grün gestellt")
    else:
        buttonSignal12 = tkinter.Button(main, text = "Signal12", fg="Red", command = signal12)
        buttonSignal12.place(x=450, y=50)
        print("Signal 12 auf Rot gestellt")
    sentInformation()

def signal13():
    global boolSignal13
    if boolSignal13 == False:  
        boolSignal13 = True
    else:
        boolSignal13 = False
    if boolSignal13 == True:
        buttonSignal13 = tkinter.Button(main, text = "Signal13", fg="Green", command = signal13)
        buttonSignal13.place(x=390, y=80)
        print("Signal 13 auf Grün gestellt")
    else:
        buttonSignal13 = tkinter.Button(main, text = "Signal13", fg="Red", command = signal13)
        buttonSignal13.place(x=390, y=80)
        print("Signal 13 auf Rot gestellt")
    sentInformation()

def signal14():
    global boolSignal14
    if boolSignal14 == False:  
        boolSignal14 = True
    else:
        boolSignal14 = False
    if boolSignal14 == True:
        buttonSignal14 = tkinter.Button(main, text = "Signal14", fg="Green", command = signal14)
        buttonSignal14.place(x=450, y=80)
        print("Signal 14 auf Grün gestellt")
    else:
        buttonSignal14 = tkinter.Button(main, text = "Signal14", fg="Red", command = signal14)
        buttonSignal14.place(x=450, y=80)
        print("Signal 14 auf Rot gestellt")
    sentInformation()

def signal15():
    global boolSignal15
    if boolSignal15 == False:  
        boolSignal15 = True
    else:
        boolSignal15 = False
    if boolSignal15 == True:
        buttonSignal15 = tkinter.Button(main, text = "Signal15", fg="Green", command = signal15)
        buttonSignal15.place(x=390, y=110)
        print("Signal 15 auf Grün gestellt")
    else:
        buttonSignal15 = tkinter.Button(main, text = "Signal15", fg="Red", command = signal15)
        buttonSignal15.place(x=390, y=110)
        print("Signal 15 auf Rot gestellt")
    sentInformation()

def signal16():
    global boolSignal16
    if boolSignal16 == False:  
        boolSignal16 = True
    else:
        boolSignal16 = False
    if boolSignal16 == True:
        buttonSignal16 = tkinter.Button(main, text = "Signal16", fg="Green", command = signal16)
        buttonSignal16.place(x=450, y=110)
        print("Signal 16 auf Grün gestellt")
    else:
        buttonSignal16 = tkinter.Button(main, text = "Signal16", fg="Red", command = signal16)
        buttonSignal16.place(x=450, y=110)
        print("Signal 16 auf Rot gestellt")
    sentInformation()

def allSignalRed():
    global boolSignal01
    global boolSignal02
    global boolSignal03
    global boolSignal04
    global boolSignal05
    global boolSignal06
    global boolSignal07
    global boolSignal08
    global boolSignal09
    global boolSignal10
    global boolSignal11
    global boolSignal12
    global boolSignal13
    global boolSignal14
    global boolSignal15
    global boolSignal16
    boolSignal01 = True
    boolSignal02 = True
    boolSignal03 = True
    boolSignal04 = True
    boolSignal05 = True
    boolSignal06 = True
    boolSignal07 = True
    boolSignal08 = True
    boolSignal09 = True
    boolSignal10 = True
    boolSignal11 = True
    boolSignal12 = True
    boolSignal13 = True
    boolSignal14 = True
    boolSignal15 = True
    boolSignal16 = True
    signal01()
    signal02()
    signal03()
    signal04()
    signal05()
    signal06()
    signal07()
    signal08()
    signal09()
    signal10()
    signal11()
    signal12()
    signal13()
    signal14()
    signal15()
    signal16()
    sentInformation()

def toggleSignal01a02():
    global boolSignal01
    global boolSignal02
    if boolSignal01 != boolSignal02:
        signal01()
        signal02()
    sentInformation()

def toggleSignal03a04():
    global boolSignal03
    global boolSignal04
    if boolSignal03 != boolSignal04:
        signal03()
        signal04()
    sentInformation()

def toggleSignal05a06():
    global boolSignal05
    global boolSignal06
    if boolSignal05 != boolSignal06:
        signal05()
        signal06()
    sentInformation()

def toggleSignal07a08():
    global boolSignal07
    global boolSignal08
    if boolSignal07 != boolSignal08:
        signal07()
        signal08()
    sentInformation()

def toggleSignal09a10():
    global boolSignal09
    global boolSignal10
    if boolSignal09 != boolSignal10:
        signal09()
        signal10()
    sentInformation()

def toggleSignal11a12():
    global boolSignal11
    global boolSignal12
    if boolSignal11 != boolSignal12:
        signal11()
        signal12()
    sentInformation()

def toggleSignal13a14():
    global boolSignal13
    global boolSignal14
    if boolSignal13 != boolSignal14:
        signal13()
        signal14()
    sentInformation()

def toggleSignal15a16():
    global boolSignal15
    global boolSignal16
    if boolSignal15 != boolSignal16:
        signal15()
        signal16()
    sentInformation()

def sentInformation():
    # ersten 4 Bit geben Information über Weiche(Adresse)

    # 0000 = Weiche 1
    # 0001 = Weiche 2
    # 0010 = Weiche 3
    # 0011 = Weiche 4
    # 0100 = Weiche 5
    # 0101 = Weiche 6
    # 0111 = Weiche 7
    # 1111 = Weiche 8

    #zweiten 4 Bit geben Information über die Schaltung der Signale
    # wenn Rot leuchten soll muss Grün aus sein und umgedreht
    # (Signal1 rot) (Signal1 grün) (Signal2 rot) (Signal2 grün)

    # 1010 alle Signale auf Rot und alle Grünen Signale aus
    # 0110 Signal 1 auf Grün Signal 2 auf Rot
    # 1001 Signal 1 auf Rot Signal 2 auf Grün
    # 0101 beide Signale auf Grün und Rote Signale aus 

    global boolSignal01
    global boolSignal02
    global boolSignal03
    global boolSignal04
    global boolSignal05
    global boolSignal06
    global boolSignal07
    global boolSignal08
    global boolSignal09
    global boolSignal10
    global boolSignal11
    global boolSignal12
    global boolSignal13
    global boolSignal14
    global boolSignal15
    global boolSignal16
    print("Sent")
    #Signale für Weiche 1(Signal1 und 2)
    # Signal 1 Rot / Siganl 2 Rot 
    if boolSignal01 == False and boolSignal02 == False:
        print("0000 1010")
        arduino.write(str(0b00001010).encode())
        time.sleep(0.01)
    # Signal 1 Grün / Siganl 2 Rot 
    if boolSignal01 == True and boolSignal02 == False:
        print("0000 0110")
        arduino.write(str(0b00000110).encode())
        time.sleep(0.01)
    # Signal 1 Rot / Siganl 2 Grün 
    if boolSignal01 == False and boolSignal02 == True:
        print("0000 1001")        
        arduino.write(str(0b00001001).encode())
        time.sleep(0.01)
    # Signal 1 Grün / Siganl 2 Grün 
    if boolSignal01 == True and boolSignal02 == True:
        print("0000 0101")
        arduino.write(str(0b00000101).encode())
        time.sleep(0.01)

    #Signale für Weiche 2(Signal3 und 4)
    # Signal 3 Rot / Siganl 4 Rot 
    if boolSignal03 == False and boolSignal04 == False:
        print("0001 1010")
        arduino.write(str(0b00011010).encode())
        time.sleep(0.01)
    # Signal 3 Grün / Siganl 4 Rot 
    if boolSignal03 == True and boolSignal04 == False:
        print("0001 0110")        
        arduino.write(str(0b00010110).encode())
        time.sleep(0.01)
    # Signal 3 Rot / Siganl 4 Grün 
    if boolSignal03 == False and boolSignal04 == True:
        print("0001 1001")        
        arduino.write(str(0b00011001).encode())
        time.sleep(0.01)
    # Signal 3 Grün / Siganl 4 Grün 
    if boolSignal03 == True and boolSignal04 == True:
        print("0001 0101")
        arduino.write(str(0b00010101).encode())
        time.sleep(0.01)

    #Signale für Weiche 3(Signal5 und 6)
    # Signal 5 Rot / Siganl 6 Rot 
    if boolSignal05 == False and boolSignal06 == False:
        print("0010 1010")
        arduino.write(str(0b00101010).encode())
        time.sleep(0.01)
    # Signal 5 Grün / Siganl 6 Rot 
    if boolSignal05 == True and boolSignal06 == False:
        print("0010 0110")
        arduino.write(str(0b00100110).encode())
        time.sleep(0.01)
    # Signal 5 Rot / Siganl 6 Grün 
    if boolSignal05 == False and boolSignal06 == True:
        print("0010 1001")
        arduino.write(str(0b00101001).encode())
        time.sleep(0.01)
    # Signal 5 Grün / Siganl 6 Grün 
    if boolSignal05 == True and boolSignal06 == True:
        print("0010 0101")
        arduino.write(str(0b00100101).encode())
        time.sleep(0.01)

    #Signale für Weiche 4(Signal7 und 8)
    # Signal 7 Rot / Siganl 8 Rot 
    if boolSignal07 == False and boolSignal08 == False:
        print("0011 1010")
        arduino.write(str(0b00111010).encode())
        time.sleep(0.01)
    # Signal 7 Grün / Siganl 8 Rot 
    if boolSignal07 == True and boolSignal08 == False:
        print("0011 0110")
        arduino.write(str(0b00110110).encode())
        time.sleep(0.01)
    # Signal 7 Rot / Siganl 8 Grün 
    if boolSignal07 == False and boolSignal08 == True:
        print("0011 1001")
        arduino.write(str(0b00111001).encode())
        time.sleep(0.01)
    # Signal 7 Grün / Siganl 8 Grün 
    if boolSignal07 == True and boolSignal08 == True:
        print("0011 0101")
        arduino.write(str(0b00110101).encode())
        time.sleep(0.01)

    #Signale für Weiche 5(Signal9 und 10)
    # Signal 9 Rot / Siganl 10 Rot 
    if boolSignal09 == False and boolSignal10 == False:
        print("0100 1010")
        arduino.write(str(0b01001010).encode())
        time.sleep(0.01)
    # Signal 9 Grün / Siganl 10 Rot 
    if boolSignal09 == True and boolSignal10 == False:
        print("0100 0110")
        arduino.write(str(0b01000110).encode())
        time.sleep(0.01)
    # Signal 9 Rot / Siganl 10 Grün 
    if boolSignal09 == False and boolSignal10 == True:
        print("0100 1001")
        arduino.write(str(0b01001001).encode())
        time.sleep(0.01)
    # Signal 9 Grün / Siganl 10 Grün 
    if boolSignal09 == True and boolSignal10 == True:
        print("0100 0101")
        arduino.write(str(0b01000101).encode())
        time.sleep(0.01)

    #Signale für Weiche 6(Signal11 und 12)
    # Signal 11 Rot / Siganl 12 Rot 
    if boolSignal11 == False and boolSignal12 == False:
        print("0101 1010")
        arduino.write(str(0b01011010).encode())
        time.sleep(0.01)
    # Signal 11 Grün / Siganl 12 Rot 
    if boolSignal11 == True and boolSignal12 == False:
        print("0101 0110")
        arduino.write(str(0b01010110).encode())
        time.sleep(0.01)
    # Signal 11 Rot / Siganl 12 Grün 
    if boolSignal11 == False and boolSignal12 == True:
        print("0101 1001")
        arduino.write(str(0b01011001).encode())
        time.sleep(0.01)
    # Signal 11 Grün / Siganl 12 Grün 
    if boolSignal11 == True and boolSignal12 == True:
        print("0101 0101")
        arduino.write(str(0b01010101).encode())
        time.sleep(0.01)

    #Signale für Weiche 7(Signal13 und 14)
    # Signal 13 Rot / Siganl 14 Rot 
    if boolSignal13 == False and boolSignal14 == False:
        print("0111 1010")
        arduino.write(str(0b01111010).encode())
        time.sleep(0.01)
    # Signal 13 Grün / Siganl 14 Rot 
    if boolSignal13 == True and boolSignal14 == False:
        print("0111 0110")
        arduino.write(str(0b01110110).encode())
        time.sleep(0.01)
    # Signal 13 Rot / Siganl 14 Grün 
    if boolSignal13 == False and boolSignal14 == True:
        print("0111 1001")
        arduino.write(str(0b01111001).encode())
        time.sleep(0.01)
    # Signal 13 Grün / Siganl 14 Grün 
    if boolSignal13 == True and boolSignal14 == True:
        print("0111 0101")
        arduino.write(str(0b01110101).encode())
        time.sleep(0.01)

    #Signale für Weiche 8(Signal15 und 16)
    # Signal 15 Rot / Siganl 16 Rot 
    if boolSignal15 == False and boolSignal16 == False:
        print("1111 1010")
        arduino.write(str(0b11111010).encode())
        time.sleep(0.01)
    # Signal 15 Grün / Siganl 16 Rot 
    if boolSignal15 == True and boolSignal16 == False:
        print("1111 0110")
        arduino.write(str(0b11110110).encode())
        time.sleep(0.01)
    # Signal 15 Rot / Siganl 16 Grün 
    if boolSignal15 == False and boolSignal16 == True:
        print("1111 1001")
        arduino.write(str(0b11111001).encode())
        time.sleep(0.01)
    # Signal 15 Grün / Siganl 16 Grün 
    if boolSignal15 == True and boolSignal16 == True:
        print("1111 0101")
        arduino.write(str(0b11110101).encode())
        time.sleep(0.01)
     
print("Verbinde Serial port")
arduino = serial.Serial(2, 9600, timeout = None)
time.sleep(1)
print("Verbunden")
        
buttonSignal01 = tkinter.Button(main, text = "Signal1", fg="Red", command = signal01)
buttonSignal01.place(x=60, y=20)

buttonSignal02 = tkinter.Button(main, text = "Signal2", fg="Red", command = signal02)
buttonSignal02.place(x=120, y=20)

buttonSignal03 = tkinter.Button(main, text = "Signal3", fg="Red", command = signal03)
buttonSignal03.place(x=60, y=50)   

buttonSignal04 = tkinter.Button(main, text = "Signal4", fg="Red", command = signal04)
buttonSignal04.place(x=120, y=50)   

buttonSignal05 = tkinter.Button(main, text = "Signal5", fg="Red", command = signal05)
buttonSignal05.place(x=60, y=80)   

buttonSignal06 = tkinter.Button(main, text = "Signal6", fg="Red", command = signal06)
buttonSignal06.place(x=120, y=80) 

buttonSignal07 = tkinter.Button(main, text = "Signal7", fg="Red", command = signal07)
buttonSignal07.place(x=60, y=110) 

buttonSignal08 = tkinter.Button(main, text = "Signal8", fg="Red", command = signal08)
buttonSignal08.place(x=120, y=110)

buttonSignal09 = tkinter.Button(main, text = "Signal9  ", fg="Red", command = signal09)
buttonSignal09.place(x=390, y=20)

buttonSignal10 = tkinter.Button(main, text = "Signal10", fg="Red", command = signal10)
buttonSignal10.place(x=450, y=20)

buttonSignal08 = tkinter.Button(main, text = "Signal11", fg="Red", command = signal11)
buttonSignal08.place(x=390, y=50)

buttonSignal08 = tkinter.Button(main, text = "Signal12", fg="Red", command = signal12)
buttonSignal08.place(x=450, y=50)

buttonSignal08 = tkinter.Button(main, text = "Signal13", fg="Red", command = signal13)
buttonSignal08.place(x=390, y=80)

buttonSignal08 = tkinter.Button(main, text = "Signal14", fg="Red", command = signal14)
buttonSignal08.place(x=450, y=80)

buttonSignal08 = tkinter.Button(main, text = "Signal15", fg="Red", command = signal15)
buttonSignal08.place(x=390, y=110)

buttonSignal08 = tkinter.Button(main, text = "Signal16", fg="Red", command = signal16)
buttonSignal08.place(x=450, y=110)
    
buttonSignal0102drehen = tkinter.Button(main, text = "Signale 1 und 2 drehen", command = toggleSignal01a02)
buttonSignal0102drehen.place(x=180, y= 20 ) 

buttonSignal0304drehen = tkinter.Button(main, text = "Signale 3 und 4 drehen", command = toggleSignal03a04)
buttonSignal0304drehen.place(x=180, y= 50 )

buttonSignal0506drehen = tkinter.Button(main, text = "Signale 5 und 6 drehen", command = toggleSignal05a06)
buttonSignal0506drehen.place(x=180, y= 80 ) 

buttonSignal0708drehen = tkinter.Button(main, text = "Signale 7 und 8 drehen", command = toggleSignal07a08)
buttonSignal0708drehen.place(x=180, y= 110 )

buttonSignal0910drehen = tkinter.Button(main, text = "Signale 9 und 10 drehen  ", command = toggleSignal09a10)
buttonSignal0910drehen.place(x=510, y= 20 ) 

buttonSignal1112drehen = tkinter.Button(main, text = "Signale 11 und 12 drehen", command = toggleSignal11a12)
buttonSignal1112drehen.place(x=510, y= 50 )

buttonSignal1314drehen = tkinter.Button(main, text = "Signale 13 und 14 drehen", command = toggleSignal13a14)
buttonSignal1314drehen.place(x=510, y= 80 ) 

buttonSignal1516drehen = tkinter.Button(main, text = "Signale 15 und 16 drehen", command = toggleSignal15a16)
buttonSignal1516drehen.place(x=510, y= 110 ) 

buttonAllSignalRed = tkinter.Button(main, text = "alle Signale auf Rot setzen", command = allSignalRed)
buttonAllSignalRed.place(x=40, y=140)

label01 = tkinter.Label(main, text = "Weiche1")
label01.place(x=1, y=20)

label02 = tkinter.Label(main, text = "Weiche2")
label02.place(x=1, y=50)

label03 = tkinter.Label(main, text = "Weiche3")
label03.place(x=1, y=80)

label04 = tkinter.Label(main, text = "Weiche4")
label04.place(x=1, y=110)

label01 = tkinter.Label(main, text = "Weiche5")
label01.place(x=330, y=20)

label01 = tkinter.Label(main, text = "Weiche6")
label01.place(x=330, y=50)

label01 = tkinter.Label(main, text = "Weiche7")
label01.place(x=330, y=80)

label01 = tkinter.Label(main, text = "Weiche8")
label01.place(x=330, y=110)

buttonEnde = tkinter.Button(main, text = "Beenden",command = ende)
buttonEnde.place(x=40, y=170)

main.mainloop()
BlackJack

@Dionysos86: Nicht optimal ist leicht untertrieben. Ich denke solange Du Namen durchnummerierst statt Datenstrukturen zu verwenden, und so verdammt viel Quelltext durch kopieren und einfügen und geringfügig ändern erstellst, und ``global`` statt objektorientierter Programmierung verwendest, solltest Du die Finger von GUI-Programmierung lassen. So wird das nichts.

Bei der GUI-Programmierung selbst ist das ständige neu erstellen von Widgets ganz sicher ein Problem. Und `place()` sollte man auch nicht verwenden. Ändere mal die Abstände zwischen den Buttons, dann siehst Du wie viel nervige Arbeit das macht.

Vergleiche mit literalen Wahrheitswerten sind schlechter Stil weil unnötig. Wenn man den Wahrheitswert selbst haben möchte, dann nimmt man einfach den Wert. Und wenn man das Gegenteil haben möchte, kann man ihn mit ``not`` negieren.

Edit: Hier das Problem mit `place()` — so sieht das bei mir aus wenn ich das Programm starte:
Bild

Und so wenn ich das Fenster so gross ziehe, dass ich den Inhalt komplett sehen kann: Bild
Antworten