Eingabefelder mit den entsprechen Labeln zu positionieren

Fragen zu Tkinter.
Antworten
Albert
User
Beiträge: 23
Registriert: Montag 29. Oktober 2007, 09:42

Hi Forum,

ich bin gerade dabei, mich in tk einzuarbeiten.
Ich sitze nun schon seit zwei Tagen an dem selben Problem, die Eingabefelder mit den entsprechen Labeln zu positionieren.
Und es will einfach nicht dort sein, wo es hin soll. Es soll so aussehen:

-------------------------------------------------
| Label1 rechts bündig wight 40
|-------------------------------------------------
| Eingabefeld1 rechts bündig wight 70
|-------------------------------------------------
| Label2 rechts bündig wight 30
|-------------------------------------------------
| Eingabefeld2 rechts bündig wight 40
|-------------------------------------------------
| Button1 und Button2 rechts bündig
|-------------------------------------------------
| Label3 rechts bündig wight 60
|-------------------------------------------------
| Listbox1 rechts bündig wight 70
|-------------------------------------------------
| Label4 rechts bündig wight 70
-------------------------------------------------
Und mein Code sieht so aus:

Code: Alles auswählen

from Tkinter import *

class App:
    def __init__(self, master):
        master.geometry("700x500")
        fm = Frame(master)
        e1 = StringVar()
        e2 = StringVar()
        
        Label(fm, text='Geben Sie bitte das Gewünschte Verzeichniss an:').pack(side=TOP, anchor=W)
        Entry(fm, width=60, textvariable=e1).pack(side=TOP, anchor=W )
        e1.set("\\\\zd-file-s.zd\\flur\\legis\\Prod")
        
        Label(fm, text='Geben Sie für die Ausgabe den Name der Datei an:').pack(side=TOP, anchor=W, )
        Entry(fm, width=40, textvariable=e2).pack(side=TOP, anchor=W, expand=YES)
        e2.set("tif_farbwert.txt")
        
        Button(fm, text="Suche").pack(side=LEFT, pady=100)
        Button(fm, text="Clear").pack(side=LEFT, pady=100)        
        
        Label(fm, text='Erg').pack(side=TOP, anchor=W)
        Label(fm, text='Das Outputfile liegt unter:').pack(side=TOP, anchor=W)
        Entry(fm, width=60).pack(side=TOP, anchor=W)
        fm.pack(fill=BOTH )
             
root = Tk()
root.option_add('*font', ('verdana', 11))
root.title("Test GUI")
display = App(root)
root.mainloop()
Wäre nett, wenn Ihr mir zeigt, wie ich das so hin kriegen.

Vielen Dank für eure Hilfe
Zuletzt geändert von Albert am Montag 12. November 2007, 13:03, insgesamt 1-mal geändert.
BlackJack

Beim `pack`-Layout verschiedene Seiten zu verwenden ist keine gute Idee. Am besten bleibt man innerhalb eines Widgets bei einer Seite oder zumindest bei `TOP`/`BOTTOM` oder `LEFT`/`RIGHT`.

Was Du da hast sind vier Widgets die von oben "herunterwachsen", dann zwei Buttons die mittig vom linken Rand aus nach rechts "wachsen" und dann soll wieder etwas an die Widgets von oben angehängt werden. Natürlich ohne die Buttons zu überschreiben, darum wird das entsprechend weit nach rechts verschoben.

Wenn Du bei `TOP` im Frame `fm` bleiben willst kannst Du zum Beispiel die beiden Buttons in einen eigenen Frame mit `LEFT` packen und den dann mit `TOP` in `fm` stecken.

Code: Alles auswählen

        button_frame = Frame(fm)
        Button(button_frame, text="Suche").pack(side=LEFT)
        Button(button_frame, text="Clear").pack(side=LEFT)
        button_frame.pack(side=TOP, anchor=W)
Albert
User
Beiträge: 23
Registriert: Montag 29. Oktober 2007, 09:42

Hi BlackJack,
es hat geklappt! :)
Danke für deine Hilfe.
Grüße Albert
Antworten