Seite 1 von 1

MyButton soll Button Optionen erhalten

Verfasst: Montag 18. Mai 2009, 12:58
von 4bit
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.

Verfasst: Montag 18. Mai 2009, 13:25
von 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.

Verfasst: Montag 18. Mai 2009, 13:48
von 4bit
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

Verfasst: Dienstag 19. Mai 2009, 11:07
von 4bit
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-

Verfasst: Mittwoch 20. Mai 2009, 23:03
von wuf
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: