Hier mein Versuch mit grid:
from tkinter import *
import sys
def ende():
sys.exit()
def Aktion():
Anweisung.config(text="Ich wurde geändert!")
Fenster = Tk()
Anzeige = Label(Fenster, text="Guten Tag")
Text = Entry(Fenster)
Anweisung = Button(Fenster, text="Drück mich", command=Aktion)
Knopf2 = Button(Fenster, text="Ende", command=ende)
Anzeige.grid(row=0, columnspan=2)
Text.grid(row=1,columnspan=2)
Anweisung.grid(row=2, column=0)
Knopf2.grid(row=2, column=1)
Fenster.mainloop()
Ist kein sinnvolles Programm, aber sortiert die Elemente ordentlich, verändert den Text in dem Button "Anweisung", beendet das Programm auf dem Button "Knopf2" und hat sogar ein Textfeld, das sich über die Buttons zieht. Da kann man etwas eingeben, allerdings ohne dass etwas geschieht.
Und wenn man die Elemente noch etwas anders platzieren möchte, kann man den Abstand zwischen ihnen festlegen mit padx (auf der x-Achse, also waagerecht) oder pady (eben senkrecht).
from tkinter import *
import sys
def ende():
sys.exit()
def Aktion():
Anweisung.config(text="Ich wurde geändert!")
Fenster = Tk()
Anzeige = Label(Fenster, text="Guten Tag")
Text = Entry(Fenster)
Anweisung = Button(Fenster, text="Drück mich", command=Aktion)
Knopf2 = Button(Fenster, text="Ende", command=ende)
Anzeige.grid(row=0, columnspan=2)
Text.grid(row=1,columnspan=2, padx = 30, pady = 60)
Anweisung.grid(row=2, column=0)
Knopf2.grid(row=2, column=1)
Fenster.mainloop()
Noch mal zurück zu pack. Hier kann man auch die Platzierung ändern, da müssen nicht alle Elemente untereinander stehen wie hier:
from tkinter import *
import sys
def ende():
sys.exit()
def Aktion():
Anweisung.config(text="Ich wurde geändert!")
Fenster = Tk()
Anzeige = Label(Fenster, text="Guten Tag")
Text = Entry(Fenster)
Anweisung = Button(Fenster, text="Drück mich", command=Aktion)
Knopf2 = Button(Fenster, text="Ende", command=ende)
Anzeige.pack()
Text.pack()
Anweisung.pack()
Knopf2.pack()
Fenster.mainloop()
Mit side = LEFT in die Klammer hinter pack werden die Elemente alle linksbündig nebeneinander gesetzt. mit side = RIGHT rechtsbündig und mit side = BOTTOM nach unten. side = TOP ist die Voreinstellung (default), muss ich also nicht eigens eingeben.
Sieht dann so aus:
from tkinter import *
import sys
def ende():
sys.exit()
def Aktion():
Anweisung.config(text="Ich wurde geändert!")
Fenster = Tk()
Anzeige = Label(Fenster, text="Guten Tag")
Text = Entry(Fenster)
Anweisung = Button(Fenster, text="Drück mich", command=Aktion)
Knopf2 = Button(Fenster, text="Ende", command=ende)
Anzeige.pack()
Text.pack(side=BOTTOM)
Anweisung.pack(side=LEFT)
Knopf2.pack(side=LEFT)
Fenster.mainloop()
Die beiden Buttons sitzen an der linken Seite, das Textfeld unten (BOTTOM). Setze ich den zweiten Button auf side=RIGHT, rutscht er an die rechte Seite.
Und dann gibt es noch die Möglichkeit, die Elemente nach genauen Vorgaben anzuordnen.
from tkinter import *
import sys
def ende():
sys.exit()
def Aktion():
Anweisung.config(text="Ich wurde geändert!")
Fenster = Tk()
Anzeige = Label(Fenster, text="Guten Tag")
Text = Entry(Fenster)
Anweisung = Button(Fenster, text="Drück mich", command=Aktion)
Knopf2 = Button(Fenster, text="Ende", command=ende)
# jetzt wird die Fenstergröße festgelegt:
Fenster.geometry("400x200")
Anzeige.place(x = 0, y = 0, width=100, height=30)
Text.place(x = 120, y = 0, width=210, height=50)
Anweisung.place(x = 20, y = 70, width=150, height=40)
Knopf2.place(x = 190, y = 70, width=60, height=40)
# und dann die Lage (Horizontal und vertikal) und die Größe der Elemente. Das ist ziemliche Fummelarbeit.
Fenster.mainloop()
Ich verstehe schon, dass man diese Variante nur nutzen soll, wenn es gar nicht anders geht. Ist wirklich aufwändig.
Keine Kommentare:
Kommentar veröffentlichen