woher kommt der Parameter?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hubgra
User
Beiträge: 53
Registriert: Donnerstag 20. Juli 2023, 17:20

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
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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?
hubgra
User
Beiträge: 53
Registriert: Donnerstag 20. Juli 2023, 17:20

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.
hubgra
User
Beiträge: 53
Registriert: Donnerstag 20. Juli 2023, 17:20

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
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
hubgra
User
Beiträge: 53
Registriert: Donnerstag 20. Juli 2023, 17:20

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?
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@hubgra: Natürlich erscheint die Ausgabe nur einmal. Warum sollte sie mehr als einmal erscheinen? Der `mainloop()` kommt nach dieser einen Ausgabe.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten