Mausklick(event) Hilfe

Fragen zu Tkinter.
Antworten
musti11
User
Beiträge: 1
Registriert: Freitag 19. Juni 2015, 13:47

Ich brauche Hilfe beim Mausklick(event), ich möchte das sich das Dach mit einem Mausklick hoch bzw. runter bewegt und somit auch die Zahlen zum Dachneigung verändert werden.

Code: Alles auswählen

def ZeichneHaus():
Punkte = (170,295, 170,170, 245,85, 320,170, 170,170, 320,170, 320,295, 170,295)
Haus = C.create_line(Punkte, width=2, fill="black", tag="h")

# Hauptfenster
T = Tk() 
T.title("")
T.geometry("600x610")


# Canvas
C = Canvas(T, width=500, height=400, bg='white')
C.grid(row=0, column=0, columnspan=5, sticky="w")
C.create_text(10,380,anchor="w", text="")

# Eingabe Dachneigung
Label(text="Dachneigung[Grad]:").grid(row=1, column=1, sticky="w")
Alpha=Entry()
Alpha.grid(row=2, column=1)
Zuletzt geändert von Anonymous am Samstag 20. Juni 2015, 18:42, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@musti11: Da fehlt der Import von den Tkinter-Objekten im Quelltext, wobei das kein *-Import sein sollte, ich hoffe also mal Du hast alle Namen aus dem Modul die verwendet werden explizit angegeben.

Apropos Namen: Im Style Guide for Python Code steht etwas über Namensschreibweisen, also zum Beispiel wann man Gross- und Kleinbuchstaben als MixedCase verwendet (Klassen) und wann kleinbuchstaben_mit_unterstrichen (z.B. Funktionsnamen), und das ausser Klassen und Konstanten Namen nicht mit Grossbuchstaben beginnen.

Ausserdem sollten Namen dem Leser eine Information vermitteln, nämlich was der Wert dahinter im Kontext des Programms bedeutet. Einbuchstabige Namen wie `T` und `C` in Deinem Quelltext tun das sicher nicht. Wenn man bei der ersten Definition eines Namens einen Kommentar dazu schreiben muss der aus ein oder zwei Wörtern besteht und die Bedeutung beschreibt, dann ist ziemlich sicher der Name selbst schlecht gewählt und sollte durch einen Bezeichner ersetzt werden der den Kommentar widerspiegelt. Und der Kommentar kann dann weg weil er nicht mehr benötigt wird um das Programm besser zu verstehen.

Werte ausser Konstanten sollten Funktionen und Methoden nur als Argumente betreten und als Ergebnisse als Rückgabewerte verlassen. Auf Modulebene gehören nur Definitionen von Konstanten, Funktionen, und Klassen. Das Hauptprogramm steht üblicherweise in einer Funktion mit dem Namen `main()` die durch folgendes Idiom aufgerufen wird:

Code: Alles auswählen

if __name__ == '__main__':
    main()
Damit kann man das Modul importieren ohne dass das Hauptprogramm abläuft, so dass man einzelne Teile des Moduls manuell oder automatisiert testen kann, oder in anderen Modulen verwenden kann, und es gibt auch Module und Werkzeuge die erwarten das man ein Modul nebeneffektfrei importieren kann. Zum Beispiel `multiprocessing` in der Standardbibliothek, oder die Sphinx-Erweiterung mit der man Dokumentation aus der Moduldatei in die generierte Dokumentation holen kann.

Wenn man dann noch ``global`` meidet wie die Pest, muss man bei GUI-Programmierung in Python geradezu zwangsläufig objektorientierte Programmierung (OOP) verwenden, also eigene Klassen schreiben.
Antworten