Bin ich vielleicht zu dumm, um Programmieren zu lernen?
Ich habe vor ein paar Wochen mit Python angefangen. Ich hatte die Jahre davor schon sehr oft mit anderen Programmiersprachen experimentiert, aber es nie durchgezogen. Das möchte ich jetzt ändern. Durch das damalige Experimentieren, hatte ich schon ein bisschen Vorkenntnis. Also wie Variablen funktionieren, wie Funktionen funktionieren, Klassen etc. Daher habe ich mich nicht all zu lange mit den Python Basics beschäftigt.
Nun zum eigentlichen Thema.
Immer wenn ich mich an ein neues Projekt wage, verstehe ich davon meistens überhaupt nichts.
Das letzte Projekt war z.B. ein Shutdown Timer. Das ganze habe ich recht einfach umsetzen können, bis ich dann allerdings auf die Idee kam, dass ein GUI ganz nett wäre. Also habe ich ein wenig geforscht und bin dann auf das Modul Tkinter gestoßen.
Da fängt es dann an. Ich versuche mir die Docs des Moduls durchzulesen, verstehe aber nur Bahnhof. Ich brauche dann einen Beitrag der mir das ganze einfach und verständlich erklärt, oder ein YouTube Tutorial. Ich bekomme es nicht hin, die nötigen Informationen aus den Docs zu finden. Ich fühle mich dann extrem überfordert. Wenn ich kein Tutorial oder ähnliches habe, brauche ich Stunden um ein paar Zeilen Code zu verstehen. Das erreiche ich halt dann durch ewiges Googlen.
Bin ich vielleicht einfach zu Doof? Die Docs sind ja da, um sie zu verstehen. Aber ich raff da meistens nichts.
4 Antworten
Du bist nicht zu dumm.
Das was Du da schilderst ist die ganz normale Lebenswelt eines jeden Programmierers, der sich auf neue Gebiete begibt.
Natürlich ist es einfacher, wenn man auf bisher gemachte Erfahrungen zurückgreifen kann und die Zeiten, die man auf dem Schlauch steht werden kürzer.
Ich programmiere seit 35 Jahren. Bei Themen mit denen ich noch nie zu tun hatte, muss ich mich auch mal tagelang durch Dokumentationen recherchieren.
Bis ich damals richtig kapiert habe wie man PixelShader programmiert vergingen Monate. Ich war es gewohnt das ein Prozessor eine Datenzelle nach der anderen verarbeitet. Bis ich auf das Bild eines Heuschreckenschwarms kam, wo jedes Insekt die gleiche Programmierung bekommt, aber abhängig vom Geschmack des Futters etwas anderes tut, brauchte es ein ganzes Stück.
Ebenso ist es bei Dir... Du hast bisher auf Basis der Consle gearbeitet: "Wenn mein Programm etwas vom Nutzer wissen will , läßt man es Fragen und auf die Antwort warten". Kommt die Antwort nicht, steht das Programm still.
Das GUI hat eine andere Philosophie.
GUI interagieren mit dem Nutzer in endloser Schleife... Ändert der Nutzer ein GUI-objekt reagiert diese Ereignisseschleife und ruft die für dieses Ereignis zuständigen Behandlungsmethoden auf. Passiert nichts , wird einfach "weitergekurbelt"...Runde um Runde....
Bei einer GUI-Programmierung musst Du völlig umdenken...
Dein Problem hatte ich beim Umstieg von GWBasic zu TurboPascal/TView. Es hat lange gedauert bis ich wirklich kapiert hatte wie die "Ereignisverarbeitung" funktioniert...
Habe einfach Geduld und experimentieren mit kleine Beispielen. Wenn Du das ganze dann kapiert hast, bist Du jedem "Unityschreiberling" haushoch überlegen. Viel Unity-"Programmierer" bauen die tollsten Sachen, ohne jemals zu kapieren was sie tun. Das unterscheidet echte Programmierer von "Enginebediensteten"...
Wenn Letzere an ihrem Unwissen zerschmettert werden, weiß ein echter Programmierer wie der Motor funktioniert.
.
Hey ilovepepegas,
ja, aller Anfang ist schwer.
UI ist so eine Sache und nicht "mal eben" zu lernen. Das ist ein Brocken.
Leider weiß man als Anfänger nicht was genau "Brocken" sind und was man innerhalb von 15 Minuten lernt.
Das Tolle daran ist allerdings, dass sobald Du "Brocken" gelernt hast, kannst Du sie beim nächsten mal wesentlich leichter einsetzen. Nach ein paar Anwendungen bist Du richtig fit und Du kannst Code in wenigen Minuten schreiben, den Du vorher nur mit 3 Stunden google hättest schreiben können.
Es ist reine Übungssache.
Die Docs zu verstehen es ebenfalls Übungssache. Ja, solche Texte sind häufig sehr technisch geschrieben. Häufig konzentriert man sich auf das absolut Wesentliche. Für einen Anfänger ist das nicht hilfreich, aber wenn Du etwas weiter bist, dann ist es eben genau das was Du willst. Du willst gar keine langen Erklärungen mehr, einfach weil Du so viele Docs lesen musst/willst, dass Du die nötigen Informationen möglichst schnell extrahieren willst.
Mein Vorschlag wäre sich bei einem Bereich richtig fit zu machen. Zum Beispiel UI, damit hast Du jetzt angefangen. Implementiere Übungsprojekte. Viele Konzepte kommen immer wieder vor.
Ansonsten kannst Du dir etwas anderes suchen was dich motiviert. Das kann Grafik sein, Sound, was immer dich interessiert.
Motivation führt zu Übung und Übung macht dich besser.
Irgendwann hast Du dann den Punkt erreicht wo Du eine gewisse Basis hast und darauf aufbauen kannst. Dann lernst Du auch wesentlich schneller.
Gruß und viel Spaß
Die meisten Docs verstehe ich auch nicht. hier lernst du ein paar Grundbefehle:
Fenster = tkinter.Tk()#Fenster erstellen
Fenster.config(Breite, Hoehe)#Größe ändern
Fenster.title('Title')#title ändern(anzeige, nicht name der Variable)
Knopf = tkinter.Button(Variable vom Fenster, text=Text, der auf dem Batton stehen muss, command=Funktion)#Button erstellen
Knopf.place(x=, y=, width=breite,height=Hoehe)#etwas positionieren
Knopf.pack()#etwas automatisch so Platzsparend wie möglich positionieren.
Ding.bind('<<Ereignis>>', Funktion)
Ding.bind('Buchstabe', Funktion)
Fenster.mainloop()#Ganz wichtig! Es muss immer am ende des Programms stehen!Beim
Doppelclick-Öffnen: nicht Programm beenden
Das ist eigentlich schon das wichtigste.
Hier kannst du auch ein Programm von mir sehen, das ich gemacht habe, vieleicht schnappst du dir ja etwas auf:
from tkinter import *
Antwort1 = ["Mir geht es Prima.", "Mir geht es gut", "Sag ich nicht","Geh\
t so", "Mir geht es Schlecht", "Ich binn sauer!", "Mir geht es Miserabel\
."]
Antwort2 = ["Das ist ja toll!", "Das freut mich!", "Wenn du es \
so Willst...", "Ok", "Schade.", "Das ist ja Schlimm!"]
def buttonClick(pos) :
Angeige.config(text=Antwort2[pos])
Fenster = Tk()
Fenster.title('Hallo')
Fenster.config(width=350, height=250)
Anzeige = Label(Fenster, text="Hallo, wie geht es dir?")
Angeige = Label(Fenster, text="")
Anzeige.place(x=80, y=10, width=160, height=30)
Angeige.place(x=80, y=40, width=200, height=30)
Tasten = []
for pos in range(7) :
Tasten.append(Button(Fenster, text=Antwort1[pos]))
pos = 0
while pos < 7 :
if pos < 6 :
Tasten[pos].place(x=30, y=(pos+5)*15, width=150, height=30)
pos += 1
Tasten[pos].place(x=180, y=(pos+4)*15, width=150, height=30)
else :
Tasten[pos].place(x=75, y=(pos+5)*15, width=150, height=30)
pos += 1
Tasten[0].config(command=lambda: buttonClick(0))
Tasten[1].config(command=lambda: buttonClick(1))
Tasten[2].config(command=lambda: buttonClick(2))
Tasten[3].config(command=lambda: buttonClick(3))
Tasten[4].config(command=lambda: buttonClick(4))
Tasten[5].config(command=lambda: buttonClick(5))
Tasten[6].config(command=lambda: buttonClick(6))
Fenster.mainloop()
oder :
from tkinter import *
from tkinter import messagebox
Antwort1 = ["Mir geht es Prima.", "Mir geht es gut", "Sag ich nicht","Geh\
t so", "Mir geht es Schlecht", "Ich binn sauer!", "Mir geht es Miserabel\
."]
Antwort2 = ["Das ist ja toll!", "Das freut mich!", "Wenn du es \
so Willst...", "Ok", "Schade.", "Das ist ja Schlimm!", "das ist ja Schlimmer \
als Schlimm!"]
def buttonClick(pos) :
messagebox.showinfo("Antwort", Antwort2[pos])
Fenster = Tk()
Fenster.title('Hallo')
Fenster.config(width=350, height=250)
Anzeige = Label(Fenster, text="Hallo, wie geht es dir?")
Anzeige.place(x=80, y=10, width=160, height=30)
Tasten = []
for pos in range(7) :
Tasten.append(Button(Fenster, text=Antwort1[pos]))
pos = 0
while pos < 7 :
if pos < 6 :
Tasten[pos].place(x=30, y=(pos+3)*15, width=150, height=30)
pos += 1
Tasten[pos].place(x=180, y=(pos+2)*15, width=150, height=30)
else :
Tasten[pos].place(x=75, y=(pos+3)*15, width=150, height=30)
pos += 1
Tasten[0].config(command=lambda: buttonClick(0))
Tasten[1].config(command=lambda: buttonClick(1))
Tasten[2].config(command=lambda: buttonClick(2))
Tasten[3].config(command=lambda: buttonClick(3))
Tasten[4].config(command=lambda: buttonClick(4))
Tasten[5].config(command=lambda: buttonClick(5))
Tasten[6].config(command=lambda: buttonClick(6))
Fenster.mainloop()
oder :
from tkinter import *
Antwort1 = ["Mir geht es Prima.", "Mir geht es gut", "Sag ich nicht","Geh\
t so", "Mir geht es Schlecht", "Ich binn sauer!", "Mir geht es Miserabel\
."]
Antwort2 = ["Das ist ja toll!", "Das freut mich!", "Wenn du es \
so Willst...", "Ok", "Schade.", "Das ist ja Schlimm!", "das ist ja Schlimmer \
als Schlimm!"]
#liste
def gedrückt(event) :
Auswahl = Box.curselection()
Nr = Auswahl[0]
Angeige.config(text=Antwort2[Nr])
Fenster = Tk()
Fenster.title('Hallo')
Fenster.config(width=200, height=200)
Anzeige = Label(Fenster, text="Hallo, wie geht es dir?")
Angeige = Label(Fenster, text="")
Anzeige.place(x=30, y=10, width=160, height=30)
Angeige.place(x=10, y=40, width=200, height=30)
Box = Listbox(Fenster)
for Nr in range(7) :
Box.insert(Nr, Antwort1[Nr])
Box.bind("<<ListboxSelect>>", gedrückt)
Box.place(x=30, y=80, width=160, height=115)
Fenster.mainloop()
. Das sind meine ersten drei Programme in tKinter
du brauchst nur übung