ich bin gerade dran eine Anwendung zu schreiben. Dazu muss ich Offsets über Buttons verändern. Da ich diese öfters mit verschiedenen Parametern brauche, wollte ich diese in ein separates Frame packen. Dieses Frame ist sehr einfach aufgebaut. Ich möchte
-einen Button 'Plus' mit dem ich den Offset erhöhen kann,
-einen Button 'Minus' mit dem ich den Offset verkleinern kann,
-ein Label in dem der aktuelle Offset angezeigt wird und
-ein Label in dem ich den Namen des Offsets sehe.
Um den Offset zu definieren brauche ich als Variablen, welche ich in den Frame geben möchte:
-einen Startwert (Standardwert von dem ab ich rechne),
-eine Schrittweite (bspw. 0.01mm),
-eine zulässige Anzahl an Schritten und
-den Namen des Offsets.
Die maximale und minimale Offsetgröße berechnet sich aus
-max_offset = Startwert + Schrittweite * Anzahl
-min_offset = Startwert - Schrittweite * Anzahl
Nachdem der Offset über die Buttons 'Plus' und 'Minus' vom Bediener geändert worden ist, möchte ich diesen neuen Offset in meiner Hauptapplikation wiederum als neue Variable benutzen können.
Soweit zur Problemstellung. Der Ablauf sollte so sein. Ich gebe in der Applikation die erforderlichen Variablen an und rufe damit die Klasse OffsetGenerator auf:
-name
-tick_size
-tick_range
-standard_offset
Jetzt möchte ich, dass im Label des aktuellen Offsets als erstes der Standard Offset steht. Über die Buttons 'Plus' und 'Minus' möchte ich jetzt Funktionen aufrufen, um den Offset zu vergrößern oder zu verkleinern:
offset_mod = offset + tick_size oder offset - tick_size
Natürlich mit einer geschalteten Prüfung, ob der Offset noch innerhalb der Grenzen liegt (siehe Formel oben). Dann brauche ich eine Funktion, mit der ich das Label mit dem aktuellen Offset aktualisiere. Das kann man ja evtl. über .config machen. Zum Schluss muss ich den veränderten Offset wieder als Variable in meine Hauptapplikation bringen, um dort wieder damit rechnen zu können.
Kann mir jemand mit dem Problem helfen?
Code: Alles auswählen
import tkinter as tk
class OffsetGenerator(tk.Frame):
def __init__(self, master, name, tick_size, tick_range, standard_offset):
tk.Frame.__init__(self, master)
class App(tk.Tk):
def __init__(self):
super().__init__()
name = 'cage'
tick_size = 0.001
tick_range = 3
standard_offset = 0
frm_cage_offset = OffsetGenerator(self, name, tick_size, tick_range, offset)
frm_cage_offset.pack()
if __name__ == '__main__':
App().mainloop()