Seite 1 von 1

Zähler mit Variablen

Verfasst: Dienstag 26. Januar 2016, 17:05
von Challanger
Hallo

Ich bin neu hier und erlerne Python
Ich habe mir auf You Tube einige Tutorials angeschaut, dabei habe ich mir folgendes Programm rausgeschrieben

was ich nicht verstehe ist das der Zähler nicht Funktioieren soll

Da immer erklärt wird das man so leicht rechnen kann mit den Variablen

jedenfalls ist es so weit das ich nichtmal mehr weiß wonach ich suchen soll

Das Problem ist das unter Butten 1 oder Plus die Variable b um eins weitergezählt werden soll

Code: Alles auswählen

from tkinter import *
b=10

fenster = Tk()
fenster.title("Zieleinrichtung")
fenster.geometry("300x300")
zeichner = Canvas(fenster)
zeichner.pack()
zeichner.create_line(0,150,300,150)
zeichner.create_line(150,0,150,300)

def ausgabeplus():
    print(b)
    b=b+1                 # was ist falsch an diesem zähler ?
    
    
def ausgabeminus():
    print(b)
    

knopf1 = Button(fenster, text="Plus",command=ausgabeplus)
knopf2 = Button(fenster, text="Minus",command=ausgabeminus)
knopf1.place(x = 20, y = 50 , width=50, height=25)
knopf2.place(x = 70, y = 50 , width=50, height=25)


mainloop()

Re: Zähler mit Variablen

Verfasst: Dienstag 26. Januar 2016, 17:25
von Sirius3
@Challanger: das Problem ist, dass in ausgabeplus, b eine lokale Variable ist, die beim print-Aufruf noch nicht definiert ist. Um also sich einen Wert über einen Funktionsaufruf hinaus merken zu können, braucht man eigentlich Objektorientierte Programmierung:

Code: Alles auswählen

import tkinter as tk

class Fenster(tk.Tk):
    def __init__(self):
        super().__init__()
        self.b = 10
        self.title("Zieleinrichtung")
        self.geometry("300x300")
        zeichner = tk.Canvas(self)
        zeichner.pack()
        zeichner.create_line(0,150,300,150)
        zeichner.create_line(150,0,150,300)
        knopf1 = tk.Button(self, text="Plus", command=self.ausgabeplus)
        knopf2 = tk.Button(self, text="Minus", command=self.ausgabeminus)
        knopf1.place(x = 20, y = 50 , width=50, height=25)
        knopf2.place(x = 70, y = 50 , width=50, height=25)

    def ausgabeplus(self):
        print(self.b)
        self.b = self.b + 1

    def ausgabeminus(self):
        print(self.b)

def main():
    fenster = Fenster()
    fenster.mainloop()
    
if __name__ == '__main__':
    main()

Re: Zähler mit Variablen

Verfasst: Dienstag 26. Januar 2016, 17:41
von Challanger
allerbesten dank

hatte mir vorhin schon alles angeguckt mit dem Class
Ich werde da nochmal Nachhaken


aber besten Dank nochmal