0

My slider won't change the value of the parameter I give it. The slider moves, but the value doesn't change. Of import here is 'temperature' which I need to vary with slider 2.

Also, winsound won't play anything and my sliders aren't labeled. What the heck is going on here?

import winsound
import pygame
import time
from visual.controls import *
from visual.graph import *
from math import *

temperature = 50
funct1 = gcurve(color=(temperature*0.04, (temperature*0.04)-2, (temperature*0.04)-2))

for x in arange (0., 100.1, 0.1):
    funct1.plot(pos=(x,5.*cos(2.*x)))
def setdir(direction): 
    cube.dir = direction

def setrate(obj): # called on slider drag events
    cuberate(obj.value) # value is min-max slider position

def cuberate(value):
    cube.dtheta = 2*value*pi/1e3

def woosh(sound):
    winsound.playsound('%s.wav' % sound, winsound.sphere.wav)


x=0
y=0
z=0
w = 350

display(x=w, y=0, width=w, height=w, range=1.5, forward=-vector(0,0,1), newzoom=1)

c = controls(x=0, y=0, width=w, height=w, range=60)

ctrl = slider(pos=(-50,20), width=7, length=100, axis=(1,0,0), text='Temperature', min=0., max=100., value=temperature)
s1 = slider(pos=(-50,40), width=7, length=100, axis=(1,0,0), text='Angular Velocity', action=lambda: setrate(s1))

cube = sphere(color=(temperature*0.04, (temperature*0.04)-2, (temperature*0.04)-2), material=materials.rough, pos=(x,y,z))
sphere.velocity = vector(x,y,z)

setrate(s1) 
setdir(-1) 

side = .4
thk = 0.3

t=0
dt=0.1
while True:
    rate(100)
    cube.p = vector (sin(t*0.02*temperature),sin(t*0.03*temperature),sin(t*0.04*temperature))
    cube.rotate(axis=(0,1,0), angle=cube.dir*cube.dtheta)
    t = t + dt
    cube.pos = cube.p*sin(t*temperature/100)/5
    woosh    
    if not (side > cube.x > -side):
        cube.p.x = -cube.p.x
    if not (side > cube.y > -side):
        cube.p.y = -cube.p.y
    if not (side > cube.z > -side):
        cube.p.z = -cube.p.z

1 Answers1

0

I think it was an oversight of the letter "s" in the word value. Replace value with values ​​in line ctrl:

ctrl = slider(pos=(-50,20), width=7, length=100, axis=(1,0,0), text='temperature', min=0, max=50, values = temperature)
alecxe
  • 462,703
  • 120
  • 1,088
  • 1,195