Bin ich vielleicht zu dumm, um Programmieren zu lernen?

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ß

Woher ich das weiß:Berufserfahrung

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