tkinter layout anordung
Verfasst: Donnerstag 6. August 2020, 21:20
Hallo Zusammen,
bin gerade an einem neuen Projekt dran, möchte mir eine GUI mit tkinter zusammenstellen wo man Werte einerseits eintragen, als auch mittels +- button verändern kann. Habe dazu in der Suche schon einiges an Hilfestellungen gefunden, jedoch hänge ich jetzt. Das Layout sollte wie folgt aussehen:
"Bezeichnung" "Eingabewert" "- button" "+button"
"Bezeichnung" "Eingabewert" "- button" "+button"
"Bezeichnung" "Eingabewert" "- button" "+button"
....
Habe es zuerst mit folgendem Code probiert:
Da habe ich mir gedacht, dass in der "class" Ebene die einzelnen Widgets nebeneinander angeführt werden, und anschließend diese Widget Packete im Bereich "def main():" untereinander dargestellt werden. Da dies nicht den erwünschten Erfolg zeigte, da die Widgets in einer Art Kurve angeordnet werden.
Dannach probierte ich es mit grid(), sieht nun so aus:
Ist nun leider auch nicht das, was ich mir vorgestellt hatte. Kann mir da jemand einen Gedankenanstoß geben??
Danke im Vorraus
bin gerade an einem neuen Projekt dran, möchte mir eine GUI mit tkinter zusammenstellen wo man Werte einerseits eintragen, als auch mittels +- button verändern kann. Habe dazu in der Suche schon einiges an Hilfestellungen gefunden, jedoch hänge ich jetzt. Das Layout sollte wie folgt aussehen:
"Bezeichnung" "Eingabewert" "- button" "+button"
"Bezeichnung" "Eingabewert" "- button" "+button"
"Bezeichnung" "Eingabewert" "- button" "+button"
....
Habe es zuerst mit folgendem Code probiert:
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter as tk
class density_dry(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.IntVar(value=1600)
tk.Label(text="density_dry", width=10).pack(side=tk.LEFT)
tk.Entry(self, textvariable=self.value).pack(side=tk.LEFT)
tk.Button(self, text='-', command=self.decrease).pack(side=tk.LEFT)
tk.Button(self, text='+', command=self.increase).pack(side=tk.LEFT)
def increase(self):
self.value.set(self.value.get() + 50)
def decrease(self):
self.value.set(self.value.get() - 50)
class saturation(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.DoubleVar(value=0.25)
tk.Label(text="saturation", width=10).pack(side=tk.LEFT)
tk.Entry(self, textvariable=self.value).pack(side=tk.LEFT)
tk.Button(self, text='-', command=self.decrease).pack(side=tk.LEFT)
tk.Button(self, text='+', command=self.increase).pack(side=tk.LEFT)
def increase(self):
self.value.set(round(self.value.get() + float(0.25), 2))
def decrease(self):
self.value.set(round(self.value.get() - float(0.25), 2))
class diameter(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.DoubleVar(value=1.0)
tk.Label(text="diameter", width=10).pack(side=tk.LEFT)
tk.Entry(self, textvariable=self.value).pack(side=tk.LEFT)
tk.Button(self, text='-', command=self.decrease).pack(side=tk.LEFT)
tk.Button(self, text='+', command=self.increase).pack(side=tk.LEFT)
def increase(self):
self.value.set(round(self.value.get() + float(0.1), 2))
def decrease(self):
self.value.set(round(self.value.get() - float(0.1), 2))
class cement_content(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.IntVar(value=300)
tk.Label(text="cement_content", width=20).pack(side=tk.LEFT)
tk.Entry(self, textvariable=self.value).pack(side=tk.LEFT)
tk.Button(self, text='-', command=self.decrease).pack(side=tk.LEFT)
tk.Button(self, text='+', command=self.increase).pack(side=tk.LEFT)
def increase(self):
self.value.set(self.value.get() + 10)
def decrease(self):
self.value.set(self.value.get() - 10)
class start_temp(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.IntVar(value=25)
tk.Label(text="start_temp", width=10).pack(side=tk.LEFT)
tk.Entry(self, textvariable=self.value).pack(side=tk.LEFT)
tk.Button(self, text='-', command=self.decrease).pack(side=tk.LEFT)
tk.Button(self, text='+', command=self.increase).pack(side=tk.LEFT)
def increase(self):
self.value.set(self.value.get() + 1)
def decrease(self):
self.value.set(self.value.get() - 1)
class einbau(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.DoubleVar(value=0)
tk.Label(text="einbau", width=10).pack(side=tk.LEFT)
tk.Entry(self, textvariable=self.value).pack(side=tk.LEFT)
tk.Button(self, text='-', command=self.decrease).pack(side=tk.LEFT)
tk.Button(self, text='+', command=self.increase).pack(side=tk.LEFT)
def increase(self):
self.value.set(round(self.value.get() + float(0.5), 1))
def decrease(self):
self.value.set(round(self.value.get() - float(0.5), 1))
def main():
root = tk.Tk()
frame = density_dry(root)
frame.pack()
frame = saturation(root)
frame.pack()
frame = diameter(root)
frame.pack()
frame = cement_content(root)
frame.pack()
frame = start_temp(root)
frame.pack()
frame = einbau(root)
frame.pack()
root.mainloop()
if __name__ == '__main__':
main()
Dannach probierte ich es mit grid(), sieht nun so aus:
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter as tk
class density_dry(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.IntVar(value=1600)
tk.Label(text="density_dry", width=10).grid(column=0, row=0)
tk.Entry(self, textvariable=self.value).grid(column=1, row=0)
tk.Button(self, text='-', command=self.decrease).grid(column=2, row=0)
tk.Button(self, text='+', command=self.increase).grid(column=3, row=0)
def increase(self):
self.value.set(self.value.get() + 50)
def decrease(self):
self.value.set(self.value.get() - 50)
class saturation(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.DoubleVar(value=0.25)
tk.Label(text="saturation", width=10).grid(column=0, row=1)
tk.Entry(self, textvariable=self.value).grid(column=1, row=1)
tk.Button(self, text='-', command=self.decrease).grid(column=2, row=1)
tk.Button(self, text='+', command=self.increase).grid(column=3, row=1)
def increase(self):
self.value.set(round(self.value.get() + float(0.25), 2))
def decrease(self):
self.value.set(round(self.value.get() - float(0.25), 2))
class diameter(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.DoubleVar(value=1.0)
tk.Label(text="diameter", width=10).grid(column=0, row=3)
tk.Entry(self, textvariable=self.value).grid(column=1, row=3)
tk.Button(self, text='-', command=self.decrease).grid(column=2, row=3)
tk.Button(self, text='+', command=self.increase).grid(column=3, row=3)
def increase(self):
self.value.set(round(self.value.get() + float(0.1), 2))
def decrease(self):
self.value.set(round(self.value.get() - float(0.1), 2))
class cement_content(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.IntVar(value=300)
tk.Label(text="cement_content", width=10).grid(column=0, row=4)
tk.Entry(self, textvariable=self.value).grid(column=1, row=4)
tk.Button(self, text='-', command=self.decrease).grid(column=2, row=4)
tk.Button(self, text='+', command=self.increase).grid(column=3, row=4)
def increase(self):
self.value.set(self.value.get() + 10)
def decrease(self):
self.value.set(self.value.get() - 10)
class start_temp(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.IntVar(value=25)
tk.Label(text="start_temp", width=10).grid(column=0, row=4)
tk.Entry(self, textvariable=self.value).grid(column=1, row=4)
tk.Button(self, text='-', command=self.decrease).grid(column=2, row=4)
tk.Button(self, text='+', command=self.increase).grid(column=3, row=4)
def increase(self):
self.value.set(self.value.get() + 1)
def decrease(self):
self.value.set(self.value.get() - 1)
class einbau(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.value = tk.DoubleVar(value=0)
tk.Label(text="einbau", width=10).grid(column=0, row=5)
tk.Entry(self, textvariable=self.value).grid(column=1, row=5)
tk.Button(self, text='-', command=self.decrease).grid(column=2, row=5)
tk.Button(self, text='+', command=self.increase).grid(column=3, row=5)
def increase(self):
self.value.set(round(self.value.get() + float(0.5), 1))
def decrease(self):
self.value.set(round(self.value.get() - float(0.5), 1))
def main():
root = tk.Tk()
frame = density_dry(root)
frame.grid(row=0)
frame = saturation(root)
frame.grid(row=1)
frame = diameter(root)
frame.grid(row=2)
frame = cement_content(root)
frame.grid(row=3)
frame = start_temp(root)
frame.grid(row=4)
frame = einbau(root)
frame.grid(row=5)
root.mainloop()
if __name__ == '__main__':
main()
Danke im Vorraus