コード例 #1
0
ファイル: apiTry.py プロジェクト: mtopcu/justPyTry
def event_demo():
    wp = jp.WebPage()
    button_div = jp.Div(classes='flex m-4 flex-wrap', a=wp)
    w_button_classes = 'bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 border border-blue-700 rounded ' \
                       'mr-2 '
    r_button_classes = 'bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 border border-blue-700 ' \
                       'rounded mr-2 '

    w_message = jp.Div(text='Click ↑ button to get weather condition',
                       classes='text-xl my-4',
                       a=wp)
    r_message = jp.Div(text='Click ↑ button to get currency',
                       classes='text-xl my-4',
                       a=wp)

    bw = jp.Button(text='Weather',
                   a=button_div,
                   classes=w_button_classes,
                   click=weather_click)
    bw.message = w_message

    br = jp.Button(text='Currency',
                   a=button_div,
                   classes=r_button_classes,
                   click=rate_click)
    br.message = r_message
    return wp
コード例 #2
0
def show_demo():
    wp = jp.WebPage()
    b = jp.Button(text="Click to toggle show", a=wp, classes=button_classes)
    d = jp.Div(text="Toggled by show", classes="m-2 p-2 text-2x1 border w-48", a=wp)
    b.d = d
    jp.Div(text="Will always show", classes="m-2", a=wp)

    def toggle_show(self, msg):
        self.d.show = not self.d.show

    b.on("click", toggle_show)

    b = jp.Button(text="Click to toggle visibility", a=wp, classes=button_classes)
    d = jp.Div(text="Toggled by visible", classes="m-2 p-2 text-2x1 border w-48", a=wp)
    d.visibility_state = "visible"
    b.d = d
    jp.Div(text="Will always show", classes="m-2", a=wp)

    def toggle_visible(self, msg):
        if self.d.visibility_state == "visible":
            self.d.set_class("invisible")
            self.d.visibility_state = "invisible"
        else:
            self.d.set_class("visible")
            self.d.visibility_state = "visible"

    b.on("click", toggle_visible)
    return wp
コード例 #3
0
    def serve(cls, req):
        # Build the web page add layout and place this page in container
        wp = jp.QuasarPage(tailwind=True)
        lay = layout.DefaultLayout(a=wp)
        container = jp.QPageContainer(a=lay)

        # classes for input boxes and labels
        input_class = "m-2 bg-gray-200 border-2 border-gray-200 rounded py-2 px-4 " \
                      "focus:outline-none focus:border-purple-500 focus:bg-white"
        label_class = "m-2 py-2 px-4"

        # create container box for the app
        con = jp.Div(a=container, classes="bg-purple-300 p-10 m-10 rounded")


        # two lines of titles
        jp.Div(a=con, text="Flatmates Bill", classes="text-4xl m-2")
        jp.Div(a=con, text="Get the amount of a bill two flatmates owe based on days in the house", classes="text-lg")

        # four lines for the input boxes and button
        l_fm1 = jp.Div(a=con, classes="grid grid-cols-4")
        l_fm2 = jp.Div(a=con, classes="grid grid-cols-4")
        l_bill = jp.Div(a=con, classes="grid grid-cols-4")
        # div for output
        output_div = jp.Div(a=con, classes="m-2 p-2 text-lg border-2 h-10")
        l_btn = jp.Div(a=con, classes="grid grid-cols-2")



        # boxes where input is typed
        jp.Div(a=l_fm1, text="1st Flatmate's name", classes=label_class)
        i_fm1_name = jp.Input(a=l_fm1, value="Martin", classes=input_class)
        jp.Div(a=l_fm1, text="days in the house", classes=label_class)
        i_fm1_days = jp.Input(a=l_fm1, value="28", classes=input_class)

        jp.Div(a=l_fm2, text="2nd Flatmate's name", classes=label_class)
        i_fm2_name = jp.Input(a=l_fm2, value="Will", classes=input_class)
        jp.Div(a=l_fm2, text="days in the house", classes=label_class)
        i_fm2_days = jp.Input(a=l_fm2, value="25", classes=input_class)

        jp.Div(a=l_bill, text="Bill amount", classes=label_class)
        i_bill_amt = jp.Input(a=l_bill, value="120", classes=input_class)
        jp.Div(a=l_bill, text="Bill period", classes=label_class)
        i_bill_period = jp.Input(a=l_bill, placeholder="e.g.: February 2021", classes=input_class)

        jp.Button(a=l_btn, text="calculate", click=cls.get_results, classes="bg-purple-700 rounded p-2 m-2",
                  fm1_name=i_fm1_name, fm2_name=i_fm2_name,
                  fm1_days=i_fm1_days, fm2_days=i_fm2_days,
                  bill_amt=i_bill_amt, bill_period=i_bill_period,
                  outputdiv=output_div)
        jp.Button(a=l_btn, text="generate PDF", click=cls.get_results, classes="bg-purple-700 rounded p-2 m-2",
                  fm1_name=i_fm1_name, fm2_name=i_fm2_name,
                  fm1_days=i_fm1_days, fm2_days=i_fm2_days,
                  bill_amt=i_bill_amt, bill_period=i_bill_period,
                  outputdiv=output_div)

        return wp
コード例 #4
0
async def blackjack():
    wp = jp.WebPage()
    wp.outer_div = jp.Div(
        classes='container mx-auto px-4 sm:px-6 lg:px-8 space-y-5', a=wp)
    wp.deck_id = await create_deck()
    # Deal initial four cards
    cards = jp.Dict(await deal(wp.deck_id, 4))
    wp.player_hand = [cards.cards[0], cards.cards[2]]
    wp.dealer_hand = [cards.cards[1], cards.cards[3]]
    jp.Div(
        text='Blackjack Demo',
        a=wp.outer_div,
        classes=
        'm-2 p-4 text-3xl font-bold leading-7 text-gray-900  sm:leading-9 sm:truncate'
    )
    wp.dealer_div = jp.Div(classes='flex flex-wrap m-2', a=wp.outer_div)
    # Image of back of card
    wp.card_back = Card(
        src=
        'https://raw.githubusercontent.com/elimintz/elimintz.github.io/master/card_back.png',
        a=wp.dealer_div)
    wp.down_card = Card(src=wp.dealer_hand[0].image,
                        a=wp.dealer_div,
                        classes='hidden')
    Card(src=wp.dealer_hand[1].image,
         a=wp.dealer_div,
         style='transition-delay: 1000ms')
    wp.player_div = jp.Div(classes='flex flex-wrap m-2', a=wp.outer_div)
    for card in wp.player_hand:
        Card(src=card.image, a=wp.player_div, style='transition-delay: 2000ms')
    button_div = jp.Div(classes='flex m-2 space-x-6', a=wp.outer_div)
    wp.stand_btn = jp.Button(text='Stand',
                             a=button_div,
                             classes=button_classes,
                             click=stand)
    wp.hit_btn = jp.Button(text='Hit',
                           a=button_div,
                           classes=button_classes,
                           click=hit)
    wp.play_again_btn = jp.Button(text='Play Again',
                                  a=button_div,
                                  classes=button_classes,
                                  click=play_again)
    wp.play_again_btn.set_class('hidden')
    wp.hand_value_div = jp.Div(
        text=f'Hand value: {hand_value(wp.player_hand)}',
        a=wp.outer_div,
        classes='text-2xl')
    return wp
コード例 #5
0
def rot_img():
    wp = jp.WebPage()
    image = jp.Img(src='https://i.ibb.co/Pjh1cJ6/caveman.jpg', a=wp)
    image.classes = 'm-4 p-4 inline-block border border-blue-500 rounded'
    image.style = f'transform: rotate(0deg)'
    image.height = 400
    image.width = 400
    button_div = jp.Div(classes='flex m-4 flex-wrap', a=wp)
    button_classes = 'bg-blue-500 hover:bg-blue-700 text-white py-1 px-2 border border-blue-700 rounded items-center'

    def rotate(self, msg):
        if self.image.style == f'transform: rotate(0deg)':
            self.image.style = f'transform: rotate(90deg)'
        elif self.image.style == f'transform: rotate(90deg)':
            self.image.style = f'transform: rotate(180deg)'
        elif self.image.style == f'transform: rotate(180deg)':
            self.image.style = f'transform: rotate(270deg)'
        elif self.image.style == f'transform: rotate(270deg)':
            self.image.style = f'transform: rotate(0deg)'

    br = jp.Button(text='Rotate',
                   a=button_div,
                   classes=button_classes,
                   click=rotate)
    br.image = image
    return wp
コード例 #6
0
def plot_test():
    wp = jp.WebPage()

    f = plt.figure()
    plt.plot([0, 1, 4, 9], marker='*', markersize=20, markeredgecolor='red')
    plt.title('Matplotlib Example')
    plt.xlabel('x data')
    plt.ylabel('y data')
    chart = jp.Matplotlib(a=wp)
    chart.num_points = 4
    plt.close(f)

    b = jp.Button(text='Add Point', a=wp,
                  classes='m-2 bg-transparent hover:bg-blue-500 text-blue-700 font-semibold hover:text-white py-2 px-4 border border-blue-500 hover:border-transparent rounded')
    b.chart = chart

    def add_point(self, msg):
        self.chart.num_points += 1
        np = self.chart.num_points
        f = plt.figure()
        plt.plot([i*i for i in range(np)], marker='*', markersize=20, markeredgecolor='red')
        plt.title(f'This chart has {np} points')
        plt.xlabel('x data')
        plt.ylabel('y data')
        self.chart.set_figure(f)
        plt.close(f)

    b.on('click', add_point)

    return wp
コード例 #7
0
ファイル: main.py プロジェクト: CypherousSkies/pdf-to-speech
async def main_screen():
    main = jp.WebPage(websockets=False)
    main += title
    main += subtitle
    def pdf_input(self,msg):
        print("event")
        sesspath = msg.session_id
        print(msg.session_id)
        if not os.path.isdir(sesspath):
            os.mkdir(sesspath)
        print(f"path made for {msg.session_id}")
        for i,v in enumerate(msg.form_data.files):
            print("getting file "+str(i))
            with open(f'{sesspath}/{v.name}','wb') as f:
                f.write(base64.b64decode(v.file_content))
        file_list = os.listdir(sesspath)
        print(f"> got {file_list}")
        if file_list:
            session_data[msg.session_id] = file_list
            msg.page.redirect = 'text_confirm'
            print(f"> got {file_list}")
    jp.P(text="Upload a pdf to get started",a=main,classes='w-full flex-none text-sm')
    form = jp.Form(a=main,enctype='multipart/form-data',submit=pdf_input)
    jp.Input(type='file',classes=jp.Styles.input_classes,a=form,accept='application/pdf',multiple=True)
    jp.Button(type='submit',text='Upload',classes=jp.Styles.button_simple,a=form)
    return main
コード例 #8
0
ファイル: j.py プロジェクト: pickmoment/moondata
async def index(request):
    wp = jp.WebPage(data={'symbols': ','.join(symbols), 'q': None})
    in1 = jp.Input(a=wp,
                   classes=input_classes,
                   placeholder='Please type here',
                   model=[wp, 'symbols'])
    b = jp.Button(text='Read', click=read, a=wp, classes=button_classes)
    return wp
コード例 #9
0
ファイル: count_test.py プロジェクト: partrita/justPy
def count_test(request):
    start_num = int(request.query_params.get('num', 10))
    animation = request.query_params.get('animation', 'flip')
    wp = jp.WebPage()
    count_button = jp.Button(text='Start Countdown',
                             classes=button_classes,
                             a=wp,
                             click=count_down)
    count_button.start_num = start_num
    count_button.count_animation = animation
    return wp
コード例 #10
0
async def input_demo(request):
    wp = jp.WebPage(data={'text':'Initial text'})
    button_classes = 'w-32 m-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded'
    b = jp.Button(text='Reset', click=reset_all, a=wp, classes=button_classes)
    jp.Hr(a=wp)
    input_classes = "m-2 bg-gray-200 appearance-none border-2 border-gray-200 rounded xtw-64 py-2 px-4 text-gray-700 focus:outline-none focus:bg-white focus:border-purple-500"
    for _ in range(5):
        jp.Input(a=wp, classes=input_classes, placeholder='Please type here', model=[wp, 'text'])
    for _ in range(3):
        jp.Div(model=[wp, 'text'], classes='m-2 p-2 h-32 text-xl border-2 overflow-auto', a=wp)
    return wp
コード例 #11
0
async def web_ui(self):
    wp = jp.WebPage()
    wp.title = 'Calcuador de jornada de Filmación'
    wp.favicon = "/CucardaVFXsup_fdoNegro.png"

    main_div = jp.Div(
        a=wp,
        classes=
        'bg-black py-2 px-2 rounded-lg shadow-xl lg:max-w-3xl  sm:max-w-2xl  container min-width transform lg:scale-100 sm:scale-150 origin-top-left'
    )  # overflow-auto flex   content-center flex-shrink-0 m-auto max-w-xl text-base sm:text-4xl lg:text-base
    main_div.add(head_div)
    app_box = jp.Div(
        a=main_div,
        classes='flex-col text-white content-center m-2 flex-grow '
    )  # flex-shrink-0
    d1_organizer = jp.Div(a=app_box, classes='flex border-gray-900 border-2')
    labels_for_data = jp.Div(a=d1_organizer,
                             classes='text-align-left ' + cell_style)
    data_input_column = jp.Div(a=d1_organizer, classes=cell_style)
    labels_for_data.add(fee_label, factor_mult_extras_label,
                        start_workday_label, end_workday_label,
                        hs_por_jornada_label, night_hs_label)
    data_input_column.add(fee_inbox, factor_mult_extras_inbox,
                          start_workday_inbox, end_workday_inbox,
                          hs_por_jornada_inbox, night_check)

    pre_info_area = jp.Div(a=app_box, classes='py-2 flex flex-no-wrap')  #

    result_box = jp.Div(a=app_box, classes='flex content-start')  #
    btn_div = jp.Div(a=result_box)
    jp.P(text='Cobrarás en Total =  ', a=result_box, classes='m-4')
    result_box.add(jp.Space(num=2), result_display)
    calc_bton = jp.Button(
        text='Calcular Total',
        name='Calcular Total',
        a=btn_div,
        click=result,
        classes=boton_style
    )  # TO-DO activar la funcionalidad del horario nocturno cuando se checkee.
    pre_info_area.add(info_area)

    end_workday_inbox.on('change', dates_non_overlap)
    fee_inbox.on('change', result)
    # calc_bton.on('before', info_area_fn)
    info_link.on('mouseover', change)
    info_link.on('mouseleave', change)
    night_check.on('change', result)

    return wp
コード例 #12
0
def event_demo():
    number_of_buttons = 25
    wp = jp.WebPage()
    button_div = jp.Div(classes='flex m-4 flex-wrap', a=wp)
    button_classes = 'w-32 mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full'
    message = jp.Div(classes='text-lg border m-2 p-2 overflow-auto h-64', a=wp)
    message.add(jp.P(text='No button clicked yet'))
    button_list = []
    for i in range(1, number_of_buttons + 1):
        b = jp.Button(text=f'Button {i}', a=button_div, classes=button_classes, click=button_click)
        b.message = message
        b.num_clicked = 0
        button_list.append(b)
    wp.button_list = button_list   # The list will now be referenced by the WebPage instance attribute
    return wp
コード例 #13
0
ファイル: event_demo(3).py プロジェクト: partrita/justPy
def event_demo():
    number_of_buttons = 25
    wp = jp.WebPage()
    button_div = jp.Div(classes='flex m-4 flex-wrap', a=wp)
    button_classes = 'w-32 mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full'
    message = jp.Div(text='No button clicked yet',
                     classes='text-2xl border m-4 p-2',
                     a=wp)
    for i in range(1, number_of_buttons + 1):
        b = jp.Button(text=f'Button {i}',
                      a=button_div,
                      classes=button_classes,
                      click=button_click)
        b.message = message
        b.num_clicked = 0
    return wp
コード例 #14
0
ファイル: cards.py プロジェクト: informatiquecsud/algo-games
    def __init__(self, values, **kwargs):
        self.values = values
        super().__init__(**kwargs)
        self.cards = []

        self.total_clicks = 0
        
        self.stats = jp.Div(a=self, classes="q-pa-sm bg-grey-3")
        self.number_to_find = jp.Div(a=self.stats, classes="q-ml-sm q-mb-sm")
        self.nb_clicked = jp.Div(a=self.stats, classes="q-ml-sm ")
        self.btn_reset = jp.Button(a=self.stats, 
            classes="bg-primary q-pa-sm q-ma-md text-white",
            text="Réinitialiser")
        self.btn_reset.on("click", self.reset_clicked)
        self.card_container = None
        
        self.reset()
コード例 #15
0
def list_demo():
    wp = jp.WebPage()
    button_list = []
    my_list = jp.Ul(a=wp, classes="m-2 p-2 list-disc")
    for i in range(1, 11):
        li = jp.Li(a=my_list)
        b = jp.Button(
            text=f"Button {i}", a=li, classes=button_classes, click=button_click
        )
        button_list.append(b)
    my_list = jp.Ul(a=wp, classes="m-2 p-2 list-disc list-inside")
    for i in range(1, 11):
        jp.Li(text=f"List two item {i}", a=my_list, classes="hover:bg-gray-200")
    my_list = jp.Ul(a=wp, classes="m-2 p-2 list-decimal list-inside")
    for i in range(1, 11):
        jp.Li(text=f"List three item {i}", a=my_list)
    wp.button_list = button_list
    return wp
コード例 #16
0
ファイル: test_cal.py プロジェクト: partrita/justPy
 def __init__(self, **kwargs):
     super().__init__(**kwargs)
     self.value = 0
     self.tape = jp.Input(
         classes='block p-2 m-2  border text-right text-sm bg-gray-200',
         a=self,
         readonly=True,
         value=' ',
         style='width: 90%')
     self.result = jp.Input(
         classes='block p-2 m-2 border text-2xl text-right',
         a=self,
         readonly=True,
         value='0',
         style='width: 90%')
     d = jp.Div(classes='flex w-auto m-2', a=self)
     b = jp.Input(text='type', a=d)
     b1 = jp.Button(text='cal!', a=d, click=self.cal_click)
     b1.calc = self
コード例 #17
0
def home():
    wp = jp.QuasarPage(tailwind=True)
    div = jp.Div(a=wp, classes="bg-gray-200 h-screen")

    div1 = jp.Div(a=div, classes="grid grid-cols-3 gap-4 p-4")
    in_1 = jp.Input(a=div1, placeholder="Enter first value",
             classes="form-input")
    in_2 = jp.Input(a=div1, placeholder="Enter second value",
             classes="form-input")
    d_output = jp.Div(a=div1, text="Result goes here...", classes="text-gray-600")
    jp.Div(a=div1, text="Just another div...", classes="text-gray-600")
    jp.Div(a=div1, text="Yet another div", classes="text-gray-600")

    div2 = jp.Div(a=div, classes="grid grid-cols-2 gap-4")
    jp.Button(a=div2, text="Calculate", click = sum_up, in1=in_1, in2=in_2,
              d = d_output,
              classes="border border-blue-500 m-2 py-1 px-4 rounded "
                      "text-blue-600 hover:bg-red-500 hover:text-white")
    jp.Div(a=div2, text="I am a cool interactive div!", mouseenter=mouse_enter,
           mouseleave=mouse_leave,
           classes = "hover:bg-red-500")
    return wp
コード例 #18
0
ファイル: PhotoBrowser.py プロジェクト: flizz15/PhotoBrowser
def photo_browser():
    all_container_classes = 'm-1 p-4'
    small_img_container_classes = 'm-1 p-1 bg-gray-700'
    default_combobox_classes = 'block bg-gray-200 border border-gray-200 text-gray-700 ' \
                               'py-3 px-4 pr-8 rounded leading-tight focus:outline-none ' \
                               'focus:bg-white focus:border-gray-500 w-full'
    settings_button_classes = 'm-2 p-2'
    dropdown_menu_classes = 'm-2 p-2 bg-gray-400'
    settings_div_classes = 'w-full'
    input_classes = "bg-gray-200 border border-gray-200 rounded py-3 px-4 pr-8 text-gray-700 " \
                    "focus:outline-none focus:bg-white focus:border-purple-500 w-full"

    main_container_style = 'position: absolute; top: 500px; width: 100%; margin: 0;'
    images_container_style = 'display:flex; justify-content:center; flex-wrap: wrap;'
    main_img_style = 'width: 800px; display: block; margin-left: auto; margin-right: auto;' \
                     'z-index: 2; left: 0; right: 0; margin: 2% auto;'
    small_img_style = 'width: 200px;'
    settings_button_style = 'position: absolute;'
    dropdown_menu_style = 'position: absolute; top: 55px; z-index: 3;'
    settings_div_style = 'position: absolute;'

    def small_container_mouseenter(self, msg):
        msg.page.main_img.src = self.child.src
        self.child.style += ' transform: scale(.85);'

    def small_container_mouseleave(self, msg):
        if not isinstance(self.child, jp.P):
            self.child.style = small_img_style
        else:
            self.child.style = ''
        msg.page.main_img.src = msg.page.main_img_src

    def select_default_img(self, msg):
        msg.page.main_img_src = self.child.src
        for img_cont in msg.page.all_image_containers:
            img_cont.set_class('bg-gray-700')
        self.set_class('bg-red-700')

    def change_images(self, msg):
        msg.page.images_container.delete_components()
        msg.page.small_images = glob(self.value + '*.*')
        msg.page.small_images = natsorted(msg.page.small_images)
        msg.page.main_img.src = 'static/' + msg.page.small_images[0]
        msg.page.main_img_src = msg.page.main_img.src
        msg.page.other_settings_container.show = True

        if msg.page.small_images_content_display_combobox.value == "text":
            if msg.page.pattern_recognize_checkbox.checked and msg.page.pattern_recognize_input.value:
                load_images(mode=2, pattern=msg.page.pattern_recognize_input.value)
            else:
                load_images(mode=2)
        else:
            load_images()

        if msg.page.main_img_position_checkbox.checked:
            msg.page.main_img.style = main_img_style
            msg.page.main_img.style += ' position: fixed;'

    def toggle_show(self, msg):
        self.dropdown_menu.show = not self.dropdown_menu.show

    def set_main_img_position(self, msg):
        msg.page.main_img.style = main_img_style
        if self.checked:
            msg.page.main_img.style += ' position: fixed;'
        else:
            msg.page.main_img.style += ' position: absolute;'

    def change_small_images_content_display(self, msg):
        msg.page.images_container.delete_components()
        if self.value == "photo":
            load_images(mode=1)
        elif self.value == "text":
            load_images(mode=2)

    def set_pattern_recognize(self, msg):
        msg.page.pattern_recognize_input.show = not msg.page.pattern_recognize_input.show
        msg.page.pattern_refresh_button.show = not msg.page.pattern_refresh_button.show
        msg.page.pattern_recognize_input.value = ''
        pattern_refresh(self, msg)

    def pattern_refresh(self, msg):
        msg.page.images_container.delete_components()
        if wp.small_images_content_display_combobox.value == "text":
            load_images(mode=2, pattern=msg.page.pattern_recognize_input.value)
        else:
            load_images(mode=1)

    wp = jp.WebPage()
    wp.body_classes = 'bg-gray-600'

    small_images_folders = glob('photos/*/')

    try:
        wp.small_images = glob(small_images_folders[0] + '*.*')
        wp.small_images = natsorted(wp.small_images)
        main_img_src = 'static/' + wp.small_images[0]
    except IndexError:
        jp.P(text='Directory photos/ is empty', a=wp, classes='text-5xl m-2 p-2')
        return wp

    main_img = jp.Img(src='', a=wp, style=main_img_style)
    main_img.show = False

    main_container = jp.Div(a=wp, style=main_container_style)

    settings_div = jp.Div(a=wp, style=settings_div_style, classes=settings_div_classes)

    dropdown_menu = jp.Div(a=settings_div, classes=dropdown_menu_classes, style=dropdown_menu_style)

    images_dir_location_combobox_container = jp.Div(a=dropdown_menu)

    jp.Label(a=images_dir_location_combobox_container, text='Dir for image src*')
    images_dir_location_combobox = jp.Select(a=images_dir_location_combobox_container, classes=default_combobox_classes)

    other_settings_container = jp.Div(a=dropdown_menu)
    other_settings_container.show = False

    jp.Label(a=other_settings_container, text='Main img pos fixed?')
    main_img_position_checkbox = jp.Input(a=other_settings_container, type='checkbox', classes='m-1 form-checkbox')
    main_img_position_checkbox.on("change", set_main_img_position)

    jp.Br(a=other_settings_container)

    jp.Label(a=other_settings_container, text='Small images content display')
    small_images_content_display_combobox = jp.Select(a=other_settings_container, classes=default_combobox_classes)
    jp.Option(a=small_images_content_display_combobox, value="photo", text='Photo')
    jp.Option(a=small_images_content_display_combobox, value="text", text='Image name')
    small_images_content_display_combobox.on('change', change_small_images_content_display)
    small_images_content_display_combobox.value = "photo"

    jp.Label(a=other_settings_container, text="Pattern recognize?")
    pattern_recognize_checkbox = jp.Input(a=other_settings_container, type='checkbox', classes='m-1 form-checkbox')
    pattern_recognize_checkbox.on("change", set_pattern_recognize)

    pattern_refresh_button = jp.Button(a=other_settings_container)
    jp.I(a=pattern_refresh_button, classes='fas fa-sync')
    pattern_refresh_button.on('click', pattern_refresh)
    pattern_refresh_button.show = False

    jp.Br(a=other_settings_container)

    pattern_recognize_input = jp.Input(a=other_settings_container, classes=input_classes, placeholder='Type pattern '
                                                                                                      'here')
    pattern_recognize_input.show = False
    pattern_refresh_button.pattern_recognize_input = pattern_recognize_input

    settings_button = jp.Button(a=settings_div, classes=settings_button_classes, style=settings_button_style)
    settings_button.dropdown_menu = dropdown_menu
    jp.I(a=settings_button, classes='fas fa-cogs fa-2x')
    settings_button.on('click', toggle_show)

    for image_folder in small_images_folders:
        jp.Option(value=image_folder, text=image_folder, a=images_dir_location_combobox)

    images_dir_location_combobox.on('change', change_images)

    images_container = jp.Div(a=main_container, classes='m-1', style=images_container_style)

    wp.main_img = main_img
    wp.main_img_src = main_img_src
    wp.images_container = images_container
    wp.pattern_recognize_input = pattern_recognize_input
    wp.pattern_refresh_button = pattern_refresh_button
    wp.small_images_content_display_combobox = small_images_content_display_combobox
    wp.pattern_recognize_checkbox = pattern_recognize_checkbox
    wp.main_img_position_checkbox = main_img_position_checkbox
    wp.other_settings_container = other_settings_container

    def load_images(mode=1, pattern=''):
        wp.all_image_containers = []
        small_img = ''
        for i in range(len(wp.small_images)):
            small_img_container = jp.Div(a=images_container, classes=small_img_container_classes,
                                         click=select_default_img, mouseenter=small_container_mouseenter,
                                         mouseleave=small_container_mouseleave, )
            if mode == 1:
                small_img = jp.Img(src=f'/static/{wp.small_images[i]}', a=small_img_container, style=small_img_style, )
            elif mode == 2:
                if pattern:
                    filename_text = basename(wp.small_images[i]).replace(pattern, '')
                    filename_text = filename_text.replace(filename_text[filename_text.find('.'):], '')
                    small_img = jp.P(src=f'/static/{wp.small_images[i]}', a=small_img_container,
                                     text=filename_text)
                else:
                    small_img = jp.P(src=f'/static/{wp.small_images[i]}', a=small_img_container,
                                     text=basename(wp.small_images[i]))
            small_img_container.child = small_img
            wp.all_image_containers.append(small_img_container)

        wp.main_img.style = main_img_style
        wp.main_img.style += 'position: absolute;'

        wp.all_image_containers[0].set_class('bg-red-700')
        main_img.show = True

    # load_images()  # uncomment it if you want to image load automatically

    return wp
コード例 #19
0
ファイル: utilities.py プロジェクト: lupinetine/scribesim
def create_empty_button(div, text, classes=button_menu):
    button = jp.Button(a=div, classes=classes)
    button.label = jp.P(a=button, text=text)
    return button
コード例 #20
0
ファイル: movies.py プロジェクト: alessdeam/MoviesDatabase2.0
 def list_movies(self):

    # genera la lista dei film del genere scelto
    def view_genre(self, msg):
         conn = sqlite3.connect('movies.db')
         c = conn.cursor()
         genre = (self.text,)
         for row in c.execute('SELECT * FROM films WHERE genre=?', genre):
             li.text = f'Genere selezionato: {self.text}'
             body_table = jp.Tbody(style='overflow:auto;', a=movie_table)
             row_table = jp.Tr(style='')
             div_table1 = jp.Td(style='width: 447px;', a=row_table)
             div_title_film = jp.Div(style='cursor: pointer;', text=row[0], a=div_table1, click=open_film)
             div_table2 = jp.Td(style='width: 183px;', a=row_table)
             div_director_film = jp.Div(style='cursor: pointer;', text=row[8], a=div_table2, click=open_film)
             div_table3 = jp.Td(style='width: 100px;', a=row_table)
             div_date_film = jp.Div(style='cursor: pointer;', text=row[3], a=div_table3, click=open_film)
             div_title_film.additional_properties = row
             div_director_film.additional_properties = row
             div_date_film.additional_properties = row
             row_table.additional_properties = {'Titolo': row[0], 'Regista': row[8], 'Data di uscita': row[3]}
             body_table.add(row_table)

         conn.commit()

         conn.close()
         button_sort_director.additional_properties = [self.text, 'Regista']
         button_sort_title.additional_properties = [self.text, 'Titolo']
         li2.set_classes('block')
         div1.remove_component(div2)
         movie_table.add(body_table)
         div1.add(div_sort_buttons)
         div1.add(movie_table)

    #genera la lista ordinata in base al titolo
    def sort_by_title(self, msg):
        movie_table.delete_components()
        body_table_title_sorted = jp.Tbody(style='overflow:auto;')
        conn = sqlite3.connect('movies.db')
        c = conn.cursor()
        for row in c.execute('SELECT * FROM films ORDER BY title'):
            if row[7] == self.additional_properties[0]:
                li.text = f'Genere selezionato: {self.additional_properties[0]}'
                row_table = jp.Tr(style='')
                div_table1 = jp.Td(style='width: 447px;', a=row_table)
                div_title_film = jp.Div(style='cursor: pointer;', text=row[0], a=div_table1, click=open_film)
                div_table2 = jp.Td(style='width: 183px;', a=row_table)
                div_director_film = jp.Div(style='cursor: pointer;', text=row[8], a=div_table2, click=open_film)
                div_table3 = jp.Td(style='width: 100px;', a=row_table)
                div_date_film = jp.Div(style='cursor: pointer;', text=row[3], a=div_table3,
                                       click=open_film)
                div_title_film.additional_properties = row
                div_director_film.additional_properties = row
                div_date_film.additional_properties = row
                body_table_title_sorted.add(row_table)
        movie_table.add(body_table_title_sorted)

    #genera la lista ordinata in base al regista
    def sort_by_director(self, msg):
        movie_table.delete_components()
        body_table_sorted = jp.Tbody(style='overflow:auto;')
        conn = sqlite3.connect('movies.db')
        c = conn.cursor()
        for row in c.execute('SELECT * FROM films ORDER BY director'):
            if row[7] == self.additional_properties[0]:
                li.text = f'Genere selezionato: {self.additional_properties[0]}'
                row_table = jp.Tr(style='')
                div_table1 = jp.Td(style='width: 447px;', a=row_table)
                div_title_film = jp.Div(style='cursor: pointer;', text=row[0], a=div_table1, click=open_film)
                div_table2 = jp.Td(style='width: 183px;', a=row_table)
                div_director_film = jp.Div(style='cursor: pointer;', text=row[8], a=div_table2, click=open_film)
                div_table3 = jp.Td(style='width: 100px;', a=row_table)
                div_date_film = jp.Div(style='cursor: pointer;', text=row[3], a=div_table3,
                                       click=open_film)
                div_title_film.additional_properties = row
                div_director_film.additional_properties = row
                div_date_film.additional_properties = row
                body_table_sorted.add(row_table)
        movie_table.add(body_table_sorted)

    #dalla visualizzazione del singolo film, torna alla lista
    def return_to_list(self, msg):
        div_sort_buttons.set_class('block')
        p_title.set_classes('hidden')
        p_director.set_classes('hidden')
        p_date.set_classes('hidden')
        p_gross.set_classes('hidden')
        p_budget.set_classes('hidden')
        p_rating.set_classes('hidden')
        p_distributor.set_classes('hidden')
        p_imdb_rating.set_classes('hidden')
        p_time.set_classes('hidden')
        tasto_indietro_lista_film.set_classes('hidden')
        tasto_indietro.set_classes('block')
        movie_table.set_classes("block")
        li.set_classes('block')
        button_sort_director.on('click', sort_by_director)

    #apre la pagina di visualizzazione di un singolo film
    def open_film(self, msg):
        div_sort_buttons.set_class('hidden')
        tasto_indietro_lista_film.set_classes('block')
        tasto_indietro.set_classes('hidden')
        movie_table.set_classes("hidden")
        li.set_classes("hidden")
        p_title.set_classes('block')
        p_director.set_classes('block')
        p_date.set_classes('block')
        p_gross.set_classes('block')
        p_budget.set_classes('block')
        p_rating.set_classes('block')
        p_distributor.set_classes('block')
        p_imdb_rating.set_classes('block')
        p_time.set_classes('block')
        p_title.text = 'Titolo: ' + self.additional_properties[0]
        p_director.text = 'Regista: ' + self.additional_properties[8]
        p_date.text = 'Data di uscita: ' + self.additional_properties[3]
        p_gross.text = 'Incasso totale: ' + str(self.additional_properties[1])
        p_budget.text = 'Budget: ' + str(self.additional_properties[2])
        p_rating.text = 'Rating: ' + self.additional_properties[4]
        p_distributor.text = 'Distributore: ' + self.additional_properties[6]
        p_imdb_rating.text = 'Punteggio su IMDB: ' + str(self.additional_properties[9])
        if (self.additional_properties[5] != None):
            p_time.text = 'Durata: ' + str(self.additional_properties[5]) + ' minuti'

    # cProfile.run('view_genre')
    profile.runctx('view_genre', None, locals())

    #torna alla selezione del genere
    def remove_genre(self, msg):
          li.text='Benvenuto su MovieDatabase, scegli un genere:'
          div1.add(div2)
          li2.set_classes('hidden')
          movie_table.delete_components()
          div1.remove_component(div_sort_buttons)
          div1.remove_component(movie_table)
          button_sort_director.on('click', sort_by_director)
          body_table.set_classes('block')

    # istanze di classi di JustPy
    wp = jp.WebPage()
    ul = jp.Ul(
        style='margin-bottom: 0px;overflow: hidden;background-color: #C3C3C3;border-top-right-radius:.225rem;border-top-left-radius:.225rem',
        a=wp, classes='shadow-md m-2 p-2')
    li = jp.Li(style='margin-left: 1%;text-decoration: none;float: left;color: black;font-size:20px',
               text='Benvenuto su MovieDatabase, scegli un genere:', a=ul)

    div1 = jp.Div(
        style='overflow:auto;height: 520px;padding:4%;padding-top:0%;margin-top: 0px;background-color: #DCDCDC;border-bottom-right-radius:.225rem;border-bottom-left-radius:.225rem',
        a=wp, classes='shadow-md m-2')

    div2 = jp.Div(style='margin-top:46px; position:absolute', a=div1)
    div_sort_buttons = jp.Div(style='padding-top: 19px;width: 1080px;height: 73px;position:absolute;background-color: #DCDCDC;')
    button_sort_title = jp.Button(a=div_sort_buttons, style='width: 27rem; border-radius: 2px;', classes='mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4', text='Ordina per titolo', click=sort_by_title)
    button_sort_director = jp.Button(a=div_sort_buttons, style='width: 11rem; border-radius: 2px;', classes='w-32 mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4', text='Ordina per regista', click=sort_by_director)

    movie_table = jp.Table(style='margin-top: 95px; color:black;width:59%')
    p_title = jp.P(a=div1, style='margin-top: 82px;color: black;font-size:20px', classes='hidden')
    p_director = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_date = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_gross = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_budget = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_rating = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_distributor = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_imdb_rating = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    p_time = jp.P(a=div1, style='color: black;font-size:20px', classes='hidden')
    body_table = jp.Tbody(style='overflow:auto;', a=movie_table)
    body_table_sorted = jp.Tbody(style='overflow:auto;')
    body_table_title_sorted = jp.Tbody(style='overflow:auto;')
    li2 = jp.Li(style='margin-left: 1%;text-decoration: none;float: left;color: black;font-size:20px', a=ul)
    li2.set_classes('hidden')
    tasto_indietro = jp.Button(a=li2,text='Clicca qui per tornare indietro', style='width: 263px;color:red;', click=remove_genre)
    tasto_indietro_lista_film = jp.Button(a=li2, text='Clicca qui per tornare alla lista',style='width: 265px;color:red;',classes='hidden', click=return_to_list)

    genres = ['Avventura','Azione','Commedia','Musical','Horror','Romantico','Thriller','Drammatico','Documentario','Altro']

    for i in genres:
        jp.Button(text=i, a=div2,click=view_genre,style=f'border-radius: .125rem;font-weight: 700;height: 12rem;margin: .5rem;margin-right: .5rem;margin-bottom: .5rem;padding-bottom: .5rem;padding-top: .5rem;padding-right: 1rem;padding-left: 1rem;color: #fff;width: 14rem;background-image: url("/static/images/{i}.jpg");')

    return wp
コード例 #21
0
ファイル: jpburnin.py プロジェクト: haggerty/burnin
wp.title = 'EMCAL LV'

header_div = jp.Div(
    text='EMCAL LV Burnin',
    a=wp,
    classes='text-5xl text-white bg-blue-500 hover:bg-blue-700 m-1')
time_div = jp.Div(
    a=wp, classes='text-1xl text-white bg-blue-500 hover:bg-blue-700 m-1')
the_time = jp.P(a=time_div)
on_button_div = jp.Div(a=wp)
off_button_div = jp.Div(a=wp)
button_classes = 'w-32 mr-2 mb-2 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full'

for i in range(nslots):
    b = jp.Button(text=f'ON {i+1}',
                  a=on_button_div,
                  classes=button_classes,
                  click=button_click)
    b.slot = i + 1
    b.onoff = 1

for i in range(nslots):
    b = jp.Button(text=f'OFF {i+1}',
                  a=off_button_div,
                  classes=button_classes,
                  click=button_click)
    b.slot = i + 1
    b.onoff = 0

data_div = jp.Div(a=wp)
gridv = jp.AgGrid(a=data_div)
gridv.options.pagination = True