grid

Fragen zu Tkinter.
Antworten
Arminius
User
Beiträge: 11
Registriert: Montag 4. April 2005, 16:27

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?
Arminius
User
Beiträge: 11
Registriert: Montag 4. April 2005, 16:27

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?
-Sugar Princes-
User
Beiträge: 38
Registriert: Freitag 8. April 2005, 16:33
Wohnort: Krefeld

zeig am besten mal den quelltext sonst wissen wir ja nicht was du da programmiert hast
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Arminius
User
Beiträge: 11
Registriert: Montag 4. April 2005, 16:27

nee, ich weis auch nicht woran es lag, aber jetzt mach ich es mit place() und das klappt gut.
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
Antworten