Aller Anfang ist schwer...

Code-Stücke können hier veröffentlicht werden.
Antworten
Naebu
User
Beiträge: 2
Registriert: Montag 19. August 2013, 23:02
Wohnort: Austria

Schönen Guten Abend :)

Erstmal möchte ich mich kurz vorstellen. Heiße Michael, bin 23 Jahre jung und komme aus Österreich.
Ich habe seit genau 3 Tage jetzt Linux, da ich schon ewig in den Genuss des Programmieren kommen wollte.
Darum habe ich mir wie gesagt vor 3 Tagen mal Ubuntu 13.04 raufgespielt.
Muss echt mal gesagt werden, bin erstaunt was für möglichkeiten es gibt - sogar für einen Laien wie mich :D

Jetzt aber zu Python. Nach einigen Anfangsschwierigkeiten und paar Hilfsvideos auf Youtube, wollte ich Euch hier mal Eure Meinung zu meinem ersten ´gelungenen´ Projekt fragen.

Code: Alles auswählen

from Tkinter import *

def callback():
    print 'Klick Klick'

def call():
    myFile = open('Naebu.txt')
    print myFile.read()

root = Tk()
myMenu = Menu(root)
root.config(menu=myMenu)

Start = Menu(myMenu)
myMenu.add_cascade(label='Start', menu=Start)
Start.add_command(label='Neu', command=callback)
Start.add_command(label='Öffnen', command=call)
Start.add_command(label='Speichern', command=callback)
Start.add_command(label='Schließen', command=root.destroy)

Einstellungen = Menu(myMenu)
myMenu.add_cascade(label='Einstellungen', menu=Einstellungen)
Einstellungen.add_command(label='Grafik', command=callback)
Einstellungen.add_command(label='Layout', command=callback)


Help = Menu(myMenu)
myMenu.add_cascade(label='Help', menu=Help)
Help.add_command(label='Help', command=callback)


root.mainloop()


Wie gesagt ohne Hilfe wärs ned gegangen, aber z.b. Dateien zu lesen oder Exit mit der richitgen Funktion zu belegen waren bereits meine Ideen^^
Kritik ist echt erwünscht und nehme alles an was mich voranbringt, echt. Bin für jedes Kommentar dankbar.

MFG Naebu
Zuletzt geändert von cofi am Montag 19. August 2013, 23:33, insgesamt 1-mal geändert.
Grund: In [python] Tags gesetzt
Stell dir vor es ist Krieg und keiner geht hin..
BlackJack

@Naebu: Sternchen-Importe sollte man vermeiden. Bei `Tkinter` holt man sich damit mal eben knapp 190 Namen in den Modulnamensraum. Das ist unübersichtlich und fehleranfällig. Wenn man das mit mehreren Modulen macht, weiss man am Ende nicht mehr wo welcher Name herkommt, und es können auch Namenskollisionen auftreten, also zwei Module die den gleichen Namen definieren.

Die Namen halten sich nicht an den Style Guide for Python Code. Insbesondere sind Namen die mit Grossbuchstaben beginnen und Kleinbuchstaben enthalten für Klassen vorgesehen. Dann braucht man zum Beispiel auch nicht so unsinnige Präfixe wie `my` voransetzen um bei einem Exemplar und der Klasse Überschneidungen zu vermeiden. Also zum Beispiel ``spam = Spam()`` statt ``mySpam = Spam()``.

Dateien die man öffnet, sollte man auch wieder schliessen. Am besten verwendet man dafür die ``with``-Anweisung, die beim Verlassen des Blocks die Datei auf jeden Fall schliesst, egal wie und aus welchen Gründen der Block verlassen wurde.

Auf Modulebene sollten nur Konstanten, also konstante Werte, Module, Funktionen, und Klassen definiert werden. Alles andere gehört in Funktionen. Das Hauptprogramm üblicherweise in eine Funktion die `main()` heisst und dann über folgendes Idion aufgerufen wird:

Code: Alles auswählen

if __name__ == '__main__':
    main()
Das sorgt dafür, dass das Programm nur automatisch abläuft, wenn man das Modul direkt ausführt, aber nicht dann, wenn man das Modul von einem anderen Modul aus importiert importiert. Oder in einer Python-Shell. Dadurch kann man einzelne Funktionen und Klassen interaktiv oder auch automatisiert testen, oder in anderen Modulen wiederverwenden.

Ansonsten macht das Programm ja im Grunde nichts und für jedes nicht-triviale GUI-Programm braucht man IMHO objektorientierte Programmierung (OOP). Du fängst da also irgendwie am falschen Ende an. Die Reihenfolge ist eher Grunddatentypen, Ausdrücke, Kontrollstrukturen, Funktionen, Ausnahmen, Klassen, und *dann* erst GUI-Programmierung, die an Konzepten die ereignisbasierte Programmierung als neues Thema beinhaltet.
Naebu
User
Beiträge: 2
Registriert: Montag 19. August 2013, 23:02
Wohnort: Austria

wow ok^^

Erstmal danke. Ich kann zwar nur mit der hälfte die du da geschrieben hast wirklich was anfangen, aber ich denke ich weiß so ca was du meinst. Im prinzip habe ich ja nur ein Tutorial von Youtube noch ein bisschen erweitert und etwas ausgeschmückt.
Ich sehe schon des wird ein langer Weg werden, bis ich wirklich verstehen werde was ich da eigentlich genau geschrieben habe.
Ich versuch mir mal so viel wie möglich zu merken und natürlich wo ich kann, auch anzuwenden.

Trozdem danke, dass du dir Zeit genommen hast für so jemanden wie mich :D

MFG Naebu
Stell dir vor es ist Krieg und keiner geht hin..
Antworten