Receive input through custom entry box and then create gradient once button is clicked

  python, python-3.x, python-idle, tkinter

here is the code for my main file
the gradient function is from the backgrounds file,
the code for defining the input boxes is marked with # entry boxes for my values on either side.
I need the entry boxes to take input, and then when the vertical/horizontal buttons are pressed a gradient is drawn(my gradient code is already written in the function and works correctly)

from ECGUI import *
from backrounds import *
from stamps import *
mode = "line"
last_x = 0    
last_y = 0   
clicked = False   


def draw(event, panel):
    global last_x
    global last_y

    if clicked and mode == "line":
        x = event.x
        y = event.y
        panel.draw_line(x, y, last_x, last_y)
        # reset the last postion to the position we just moved to
        # so that  next time the line will be drawn back here not to
        # our starting point
        last_x = x
        last_y = y


def click_down(event, panel):
    global last_x
    global last_y
    global clicked
    clicked = True
    last_x = event.x
    last_y = event.y
    if mode == "snail":
        snail(panel,event.x-30,event.y-30,1,1)
    elif mode == "turtle":
        turtle(panel,event.x-50,event.y-50,1,1)
    elif mode == "rabbit":
        rabbit(panel,event.x-50,event.y-50, 1, 1)
    elif mode == "cat":
        cat(panel,event.x-50,event.y-50, 1, 1)
    elif mode == "rat":
        rat(panel,event.x-100,event.y-100, 1, 1)
        

# takes an event as a parameter and records that the user is no longer
# pressing the mouse down in the clicked variable
def click_up(event):
    global clicked
    clicked = False

# sets our mode to bird so that next time the user clicks on the canvas
# a bird will be drawn 
def snail_helper():
    global mode
    mode = "snail"
    
def rabbit_helper():
    global mode
    mode = "rabbit"
# sets our mode to line so that next time the user clicks on the canvas
# a line will be drawn 
def line_helper():
    global mode
    mode = "line"

# sets our mode to turtle so that next time the user clicks on the canvas
# a turtle will be drawn 
def turtle_helper():
    global mode
    mode = "turtle"
def cat_helper():
    global mode
    mode = "cat"
def rat_helper():
    global mode
    mode = "rat"

def draw_vert(red_start,green_start,blue_start,red_stop,green_stop,blue_stop,):

    print("vert")


def draw_horz():
    gradient(panel,red_start,green_start,blue_start,red_stop,green_stop,blue_stop,"up")
def main():                  
    # creates a window with a title and button in a top row and a drawing area
    window = make_window("A Painters Canvas", "white")
    # needed so we have the label and button in a row and the canvas below


    animals_alignment = "left"
    color_start_alignment = "left"
    back_alignment = "left"
    top_frame = add_frame(window,"white",0,0,0,0,0,'y')
    frame_stamps = add_frame(window,"white",0,0,0,0,0,'y')
    frame_back = add_frame(window,"white",0,0,0,0,0,'y')
    
    add_label(frame_stamps, "Stamps:", side="top",font_family='TimesNewRoman',bold = True)
    snail_button = add_button( frame_stamps, "snail", side=animals_alignment)
    turtle_button = add_button( frame_stamps, "turtle",side=animals_alignment)
    rabbit_button = add_button( frame_stamps, "rabbit",side=animals_alignment)
    cat_button = add_button( frame_stamps, "cat",side=animals_alignment)
    rat_button = add_button( frame_stamps, "rat",side=animals_alignment)
    line_button = add_button( frame_stamps, "pen mode",side=animals_alignment )
    add_label(frame_back, "Backrounds:", side="bottom",font_family='TimesNewRoman',bold = True)
    solid_button = add_button( frame_back,"solid",side=back_alignment)
    vert_button = add_button( frame_back, "vertical gradient",side=back_alignment)
    horz_button = add_button( frame_back, "horizontal gradient",side=back_alignment)
    



    

    add_label(top_frame, "Starting Colors:", side=color_start_alignment)

    # entry boxes for my values

    add_label(top_frame, "Red:", side=color_start_alignment)
    red_start = add_entry_box(top_frame,10,side = color_start_alignment)
    
    add_label(top_frame, "Blue:", side=color_start_alignment)
    blue_start = add_entry_box(top_frame,10,side = color_start_alignment)
    
    add_label(top_frame, "Green:", side=color_start_alignment)
    green_start = add_entry_box(top_frame,10,side = color_start_alignment)
    

    add_label(top_frame, "Stop Colors:", side=color_start_alignment)
    add_label(top_frame, "Green:", side="left")
    green_stop = add_entry_box(top_frame,10,side = "left")

    add_label(top_frame, "Blue:", side="left")
    blue_stop = add_entry_box(top_frame,10,side = "left")
    
    add_label(top_frame, "Red:", side="left")
    red_stop = add_entry_box(top_frame,10,side = "left")

    # entry boxes for my values
    
    
    
    
    panel = add_canvas(window, 1000, 800, "white")
    
    # sets which functions should run when each mouse action occurs
    panel["move"] = lambda event: draw(event, panel)
    panel["press"] = lambda event : click_down(event, panel)
    panel["release"] = click_up
    snail_button["command"] = snail_helper
    rabbit_button["command"] = rabbit_helper
    line_button["command"] = line_helper
    turtle_button["command"] = turtle_helper
    cat_button["command"] = cat_helper
    rat_button["command"] = rat_helper
    vert_button["command"] = gradient(panel,red_start,green_start,blue_start,red_stop,green_stop,blue_stop,"right")
    horz_button["command"] = gradient(panel,red_start,green_start,blue_start,red_stop,green_stop,blue_stop,"right")
    solid_button["command"] = gradient(panel,red_stop,green_stop,blue_stop,red_stop,green_stop,blue_stop,"right")

main()


output:
enter image description here
it seems to me that the start/stop color lines are not receiving input and I cant quite figure out how to make it work.

Source: Python Questions

LEAVE A COMMENT