Seite 1 von 1

grid

Verfasst: Sonntag 10. April 2005, 12:57
von Arminius
hallo, ich möchte mehrere buttons in einen feld darstellen wobei wenn man einen button klickt immer das selbe passiert (mit diesem speziellen Button). Ich habe mir überlegt, dass ich da eine button-Klasse erstellen könnte und dann eine Liste mit den ganzen Buttons drin. Jetzt frag ich mich, wie ich das am besten darstellen könnte. Ist grid dazu gut zu benutzen und wenn ja, kann mir jemand ein beispiel zeigen, wie grid zu benutzen ist?

Verfasst: Sonntag 10. April 2005, 15:11
von Arminius
ok, das mit grid hab ich hinbekommen. leider kann man dabei keine spalten leer lassen :( Gibt es eine Möglichkeit, genau zu bestimmen, wo ein Button in einem Frame sein soll. Außerdem wird mein Frame nicht mit den Größen aufgebaut, die ich ihm mitgebe ??? Weis jemand rat?

Verfasst: Sonntag 10. April 2005, 15:16
von -Sugar Princes-
zeig am besten mal den quelltext sonst wissen wir ja nicht was du da programmiert hast

Verfasst: Sonntag 10. April 2005, 15:26
von Leonidas
Arminius hat geschrieben:Außerdem wird mein Frame nicht mit den Größen aufgebaut, die ich ihm mitgebe ??? Weis jemand rat?
Sowas?

Code: Alles auswählen

#!/usr/bin/env python
import Tkinter as tk

root = tk.Tk()
root.wm_geometry('450x550+20+20')
root.update()
root.mainloop()

Verfasst: Sonntag 10. April 2005, 15:55
von Arminius
nee, ich weis auch nicht woran es lag, aber jetzt mach ich es mit place() und das klappt gut.

Verfasst: Sonntag 10. April 2005, 18:46
von Mr_Snede
Hi Arminius,
mit deiner Frage Buttons in einem Grid anzuordnen hast du mir eine gute Idee gegeben, um bei meinem Projekt einige Zeilen zu sparen.
- Ich hoffe du bist mir nicht böse, wenn ich mich mal in deinen Thread einklinke.

Wäre schön, wenn du deine Lösung posten könntest.
Ich bekomme noch keine Funktionen an die Buttons gebunden. Also für jeden Knopf eine eigene Funktion.
Bisher habe ich folgendes zusammengestellt:

Code: Alles auswählen

#!/usr/bin/python
# -*- encoding: latin-1 -*-

import Tkinter as tk

def eins():
    print "eins"

def zwei():
    print "zwei"

def drei():
    print "drei"

alle_knoepfe = ["eins", "zwei", "drei"]

master = tk.Tk()

for knopf in alle_knoepfe:
    tk.Button(master,
        text = knopf,
        command = knopf).grid(
        row = 0,
        column = alle_knoepfe.index(knopf) )

master.mainloop()
Was ich will ist, das command = knopf eben auf die jeweilige Prozedur zugegriffen wird.

cu Sebastian

Verfasst: Sonntag 10. April 2005, 20:40
von mawe
Hi!

@Arminius:
Frames collabieren, das heisst sie sind immer so gross wie der Platz, den die enthaltenen Widgets einnehmen.
Wenn Du mit grid Spalten oder Zeilen freilassen willst, setz einfach ein Label ohne Text hinein :wink:

@Mr_Snede:
Wie wärs damit:

Code: Alles auswählen

from Tkinter import *

def eins():
    print "eins"

def zwei():
    print "zwei"

knoepfe = [["eins",eins],["zwei",zwei]]

root = Tk()
for i in range(len(knoepfe)):
    Button(text=knoepfe[i][0], command=knoepfe[i][1]).grid(row=i,column=0)

root.mainloop()
Gruß, mawe