MyButton soll Button Optionen erhalten

Fragen zu Tkinter.
Antworten
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

Hallo,

ich habe vor eine Menge von Buttons automatisch zu generieren. Es soll jeweils 10 Buttons geben, die 1 auf einen Wert in einem Textfeld addieren und daneben 10 Buttons, die 1 von diesem Wert abziehen. Der Wert ist immer das letzte Zeichen in einer Zeile und es gibt pro Zeile einen Button der addiert und einen der subtrahiert.
Die Buttons sollen mir also das editieren per Hand vereinfachen.

Der Button Befehl sieht derzeit so aus:

Code: Alles auswählen

def edit_text(self, line, sign):
        current = int(self.txt3.get(line+".end-1chars", line+".end"))
        self.txt3.delete(line+".end-"+str(sign)+"chars", line+".end")
        self.txt3.insert(line+".end",current+1)
Self bezieht sich auf die Anwendung. Da ich die Buttons mit einer For-Schleife erschaffen möchte habe ich mir überlegt eine Klasse zu schreiben, sodaß die Zeile und +1/-1 jeweils als Parameter bei der Instanzierung übergeben werden können:

Code: Alles auswählen

    class MyButton(Tkinter.Button):
        def __init__(self, line, sign):
            self.line = line
            self.sign = sign
Aber das funktioniert nicht, denn jetzt kann ich Optionen, die für Tkinter.Button funktionieren nicht mehr mit übergaben.

Muss wahrscheinlich nur irgendwo eine Zeile einfügen. Weiß jemand wie's geht?

Grüße,
4bit.
BlackJack

@4bit: Na Du musst halt dafür Sorgen, dass Deine neue `__init__()` alle Argumente an die `Tkinter.Button.__init__()` weitergibt, wozu Du die natürlich auch Aufrufen musst.

Schau Dir mal Funktionen in der Doku an und was `*args` und `**kwargs` in der Funktionssignatur bedeuten, und generell Vererbung, denn das Aufrufen der `__init__()` der Basisklasse(n) sollte man sowieso machen.

Von irgendwoher muss Dein Button dann aber noch das `txt3`-Objekt kennen um den Text ändern zu können.

Insgesamt sieht mir das aber auch nach einem komischen Entwurf aus, wenn numerische Daten als Teil von Texten in der GUI gespeichert werden.
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

Naja, in dem Text werden Gleichungen stehen, die von dem Programm interpretiert werden sollen. Also zum Beispiel:

Code: Alles auswählen

f1(v3=0, v1=0) = 1
f1(default) = 0
f2(v1=1) = 0
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

weiß jemand, wie man Buttons kleiner macht? Möchte einen Button erzeugen, der kaum größer ist, als das "+" Zeichen, daß auf ihm steht (Schriftgröße 8).

Code: Alles auswählen

btn_plus1.grid(column = 3, row = 7, ipadx = 0, ipady = 0, padx = 0, pady = 0)
tuts leider nicht.

Grüße,
4bit-
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo 4bit

Ich würde für die Schaltfläche gif-Symbole verwenden

Hier etwas zum ausprobieren:
http://paste.pocoo.org/show/118276/

Gruss wuf :wink:
Take it easy Mates!
Antworten