Man benutzt keine *-Importe. Man benutzt keine globalen Variablen, daher sollte der Code so aussehen:
Code: Alles auswählen
from functools import partial
import tkinter as tk
def sel(scale_value):
value = scale_value.get()
print(value)
def main():
root = tk.Tk()
scale_value = tk.DoubleVar(root)
scale = tk.Scale(root, from_=-2, to=10, variable=scale_value)
scale.pack(anchor=tk.CENTER)
button = tk.Button(root, text="Get Scale Value", command=partial(sel, scale_value))
button.pack(anchor=tk.CENTER)
root.mainloop()
if __name__ == "__main__":
main()
An der Stelle wo Du ›#hier passiert nichts‹ geschrieben hast, passiert natürlich was, Du fragst den Wert Deines Scale ab. Da aber zu dem Zeitpunkt der Nutzer noch gar keine Gelegenheit hatte, etwas zu tun, kommt da natürlich immer 0 raus.
Und an der Stelle wo ich ›print‹ geschrieben habe (wie es in allen Beispielen ist), mußt Du natürlich den Code schreiben, der etwas mit dem Wert tut. So arbeiten GUIs, es wird auf Ereignisse reagiert, indem die GUI Funktionen aufruft.