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