Łączenie przycisków z suwakiem

0

WItam mam stworzyć mini program do regulacji światła i żeby 2 zapamiętywał napisałem kod pod wszystkie okna definicje ale nie wiem jak połączyć je z suwakiem. Jeśli możecie to pomóżcie. Pozdrawiam Michał.

from tkinter import*
from tkinter import messagebox
import tkinter as tk
import json as tk
import os as tk
import turtle as tk

window = Tk()

poziom_oswietlenia = [[100, 80, 60, 40, 20, 10], [50, 40, 30, 20, 10, 5]]
label1 = Label( window,relief = 'groove',width = 6)
label2 = Label( window,relief = 'groove',width = 6)
label3 = Label( window,relief = 'groove',width = 6)
label4 = Label( window,relief = 'groove',width = 6)
label5 = Label( window,relief = 'groove',width = 6)
label6 = Label( window,relief = 'groove',width = 6)
scene1Btn = Button(window)
scene2Btn = Button(window)
scene3Btn = Button(window)
scene4Btn = Button(window)
suwak1 = Scale(window, relief = 'raised', width = 10, orient="horizontal")
suwak2 = Scale(window, relief = 'raised', width = 10, orient="horizontal")
suwak3 = Scale(window, relief = 'raised', width = 10, orient="horizontal")
suwak4 = Scale(window, relief = 'raised', width = 10, orient="horizontal")
suwak5 = Scale(window, relief = 'raised', width = 10, orient="horizontal")
suwak6 = Scale(window, relief = 'raised', width = 10, orient="horizontal")

label1.grid(row = 0, column = 0)
label2.grid(row = 1, column = 0)
label3.grid(row = 2, column = 0)
label4.grid(row = 3, column = 0)
label5.grid(row = 4, column = 0)
label6.grid(row = 5, column = 0)
scene1Btn.grid(row = 6, column = 0)
scene2Btn.grid(row = 7, column = 0)
scene3Btn.grid(row = 6, column = 1)
scene4Btn.grid(row = 7, column = 1)
suwak1.grid(row = 0, column = 1)
suwak2.grid(row = 1, column = 1)
suwak3.grid(row = 2, column = 1)
suwak4.grid(row = 3, column = 1)
suwak5.grid(row = 4, column = 1)
suwak6.grid(row = 5, column = 1)

def recall1() :
    label1.configure(text=f'{poziom_oswietlenia[0][0]}%')
    label2.configure(text=f'{poziom_oswietlenia[0][1]}%')
    label3.configure(text=f'{poziom_oswietlenia[0][2]}%')
    label4.configure(text=f'{poziom_oswietlenia[0][3]}%')
    label5.configure(text=f'{poziom_oswietlenia[0][4]}%')
    label6.configure(text=f'{poziom_oswietlenia[0][5]}%')
    
def recall2() :
    label1.configure(text=f'{poziom_oswietlenia[1][0]}%')
    label2.configure(text=f'{poziom_oswietlenia[1][1]}%')
    label3.configure(text=f'{poziom_oswietlenia[1][2]}%')
    label4.configure(text=f'{poziom_oswietlenia[1][3]}%')
    label5.configure(text=f'{poziom_oswietlenia[1][4]}%')
    label6.configure(text=f'{poziom_oswietlenia[1][5]}%')

def preset1() :
    poziom_oswietlenia[0][0] = int(label1.cget("text").rstrip("100"))
    poziom_oswietlenia[0][1] = int(label2.cget("text").rstrip("80"))
    poziom_oswietlenia[0][2] = int(label3.cget("text").rstrip("60"))
    poziom_oswietlenia[0][3] = int(label4.cget("text").rstrip("40"))
    poziom_oswietlenia[0][4] = int(label5.cget("text").rstrip("20"))
    poziom_oswietlenia[0][5] = int(label6.cget("text").rstrip("10"))

def preset2() :
    poziom_oswietlenia[1][0] = int(label1.cget("text").rstrip("100"))
    poziom_oswietlenia[1][1] = int(label2.cget("text").rstrip("80"))
    poziom_oswietlenia[1][2] = int(label3.cget("text").rstrip("60"))
    poziom_oswietlenia[1][3] = int(label4.cget("text").rstrip("40"))
    poziom_oswietlenia[1][4] = int(label5.cget("text").rstrip("20"))
    poziom_oswietlenia[1][5] = int(label6.cget("text").rstrip("10"))

window.title('Projekt Tkinter')

label1.configure(text = '100%')
label2.configure(text = '80%')
label3.configure(text = '60%')
label4.configure(text = '40%')
label5.configure(text = '20%')
label6.configure(text = '10%')
scene1Btn.configure(text = 'Recall Scene 1', command = recall1)
scene2Btn.configure(text = 'Recall Scene 2', command = recall2)
scene3Btn.configure(text = 'Store Preset 1', command = preset1)
scene4Btn.configure(text = 'Store Preset 2', command = preset2)

window.mainloop()

Zrzut ekranu 2023-10-25 001313.png

0
Żeby suwak zmieniał tekst etykiety musisz mu dodać komendę.

Np. zmień linię 21:

suwak1 = Scale(window, relief = 'raised', width = 10, orient="horizontal")

na

suwak1 = Scale(window, relief = 'raised', width = 10, orient="horizontal", command=lambda v: label1.configure(text=f'{v}%'))

Analogicznie dla pozostałych suwaków i ich etykiet.


Żeby preset zmieniał wartość suwaka, a nie tylko etykiety, to musisz suwakowi ustawić tą samą wartość, co etykiecie.

Np. pod linią 46:

def recall1() :
    label1.configure(text=f'{poziom_oswietlenia[0][0]}%')
    suwak1.set(poziom_oswietlenia[0][0])

W funkcjach ustawiających preset musisz zawsze przy zmianie labela zmienić odpowiedni suwak...

1 użytkowników online, w tym zalogowanych: 0, gości: 1