Seite 1 von 1

woher kommt der Parameter?

Verfasst: Samstag 17. Februar 2024, 18:06
von hubgra
import tkinter as tk

root = tk.Tk()
x = tk.DoubleVar()

def setX():
x.set(w1.get())

w1 = tk.Scale(root, from_=-10, to=10, orient=tk.HORIZONTAL, command = setX)
w1.pack()

setX()
print(x.get())
es gibt eine Fehlermeldung:
TypeError: setX() takes 0 positional arguments but 1 was given

Re: woher kommt der Parameter?

Verfasst: Samstag 17. Februar 2024, 18:09
von /me
Was meinst du, wofür "command = setX" gut ist und was es tut? Und warum hast du es nach über 3 Dutzend Postings immer noch nicht geschafft den Button für die Formatierung des Python-Quelltextes zu finden?

Re: woher kommt der Parameter?

Verfasst: Samstag 17. Februar 2024, 18:17
von hubgra
setX soll den mit scale eingestellten Wert der Variablen x zuordnen.
Um einen Text zu Übermitteln, kopiere ich ihn und füge ihn bei " ein. Warum das ident nicht übernommen wird, weiß ich nicht.

Re: woher kommt der Parameter?

Verfasst: Samstag 17. Februar 2024, 18:38
von hubgra

Code: Alles auswählen

import tkinter as tk

root = tk.Tk()
x = tk.DoubleVar()

def setX():
    x.set(w1.get())
    
w1 = tk.Scale(root, from_=-10, to=10, orient=tk.HORIZONTAL, command = setX)
w1.pack()

setX()
print(x.get())
root.mainloop()
so sieht es besser aus

Re: woher kommt der Parameter?

Verfasst: Samstag 17. Februar 2024, 18:56
von __blackjack__
@hubgra: Der Parameter kommt vom `Scale`. Nimm den doch einfach mal entgegen und gib ihn aus. Dann weisst Du wie `setX()` nicht nur einfacher wird, sondern überflüssig. Und danach kannst Du dann `command` vergessen und gleich `variable` verwenden.

Re: woher kommt der Parameter?

Verfasst: Samstag 17. Februar 2024, 19:27
von hubgra

Code: Alles auswählen

import tkinter as tk

root = tk.Tk()
x = tk.DoubleVar()
    
w1 = tk.Scale(root, from_=-10, to=10, orient=tk.HORIZONTAL, variable = x)
w1.pack()

print(x.get())

root.mainloop()
als Ausgabe erscheint nur einmal 0.0, wo bleibt der mainloop?

Re: woher kommt der Parameter?

Verfasst: Samstag 17. Februar 2024, 20:10
von __blackjack__
@hubgra: Natürlich erscheint die Ausgabe nur einmal. Warum sollte sie mehr als einmal erscheinen? Der `mainloop()` kommt nach dieser einen Ausgabe.