示例#1
0
def add_IBM_computers_view():
    """
    Adds IBM architecture selector.
    """
    core.add_spacing(name='##space9', count=2)
    core.add_text('Architecture name:', before='##space5')
    core.add_radio_button('radio##3',
                          items=list(gui.backend_dict.values())[1:],
                          source='architecture',
                          before='##space5')
    gui.prev_architecture = 1
示例#2
0
 def save_page_dialog(self, sender, data):
     tabs = [{
         "name": tab.tab_name,
         "id": tab.id
     } for tab in self.tab_tracker.tabs]
     dialog_height = 30 * (len(tabs) + 2)
     with simple.child("SavePopup", height=dialog_height):
         dpg.add_text("Choose which tab to save:")
         dpg.add_radio_button("SaveRadio",
                              items=[tab["name"] for tab in tabs])
         dpg.add_spacing(count=2)
         dpg.add_button("SaveButton", label="Save", callback=self.save_page)
示例#3
0
def set_default(sender, data):
    """
    resets all running parameters to default.
    """
    if core.get_value('device_type') == 0:
        core.add_spacing(name='##space9', count=2)
        core.add_text('Architecture name:', before='##space5')
        core.add_radio_button('radio##3',
                              items=list(gui.backend_dict.values())[1:],
                              source='architecture',
                              before='##space5')
    core.set_value('device_type', 1)
    core.set_value('architecture', 1)
    core.set_value('layout_type', 1)
    core.set_value('opt_level', 1)
    core.set_value('##num_of_iter', 100)
示例#4
0
def add_arbitrary_coupling_view():
    # load arbitrary couplings from file
    try:
        with open('arbitrary_coupling.pickle', 'rb') as arbitrary_file:
            custom_dict = pickle.load(arbitrary_file)

        core.add_spacing(name='##space9', count=2)
        core.add_text('Architecture name:', before='##space5')
        core.add_radio_button('radio##3',
                              items=list(custom_dict.keys()),
                              source='architecture',
                              before='##space5')
        gui.prev_architecture = 2
    except:
        core.add_spacing(name='##space9', count=2)
        core.add_text('There are no arbitrary couplings.', before='##space5')
        gui.prev_architecture = 2
示例#5
0
    def __init__(self):
        core.set_style_item_spacing(1, 1)
        core.set_style_window_padding(0, 0)

        with simple.window("main"):
            with simple.group("controls", width=520):
                with simple.group("buttons"):
                    for x in range(6):
                        core.add_button(f"id-{x}", label=f"button {x}")
                    core.add_color_button("bcolor", (196, 128, 155, 255))
                    core.add_radio_button("radio")
                    core.add_checkbox("checkbox")

                core.add_same_line()

                with simple.group("misc"):
                    core.add_date_picker("date")

                with simple.group("text"):
                    core.add_text("text")
                    core.add_input_text(
                        "input_text",
                        label="",
                        default_value=
                        "Call me Ish-meal. Tasty like an ashen log.")
                    core.add_label_text("label",
                                        label="",
                                        default_value="label")

                core.add_same_line()

                with simple.group("dropdown"):
                    core.add_listbox("listbox", label="", items=(1, 2, 3))
                    core.add_combo("combo", label="", items=(1, 2, 3))

                for x in ["float", "int"]:
                    with simple.group(x):
                        for what in ["add_drag_", "add_input_"]:
                            for y in ['', 2, 3, 4]:
                                n = f"{what}{x}{y}"
                                cmd = getattr(core, n)
                                cmd(n, label="", width=200)
                    core.add_same_line()

        manager.ThemeManager()
示例#6
0
def start():
    """
    Renders main window elements.
    """
    with open('token.txt', 'r') as token_file:
        token = token_file.readline()
        try:
            # Connect to IBM
            core.run_async_function(get_backends_async, data=token)
            core.set_render_callback(show_button)

            # Progress bar
            with simple.window('Please wait',
                               no_scrollbar=True,
                               height=70,
                               width=400,
                               x_pos=500,
                               y_pos=200):
                core.add_progress_bar('progress',
                                      value=0.0,
                                      overlay='Connecting to IBM...',
                                      width=400)
                core.run_async_function(progress_async, 0)

            # Menu bar
            with simple.menu_bar("Main Menu Bar"):

                with simple.menu("File"):

                    core.add_menu_item("Save", callback=print_me)
                    core.add_menu_item("Save As", callback=print_me)

                core.add_menu_item("Help", callback=open_help_window)
                core.add_menu_item("About", callback=open_about_window)

            # Parameters group
            with simple.group('left group', width=350):
                # Select file button
                core.add_child('##file_block',
                               width=350,
                               height=180,
                               show=False)
                core.add_button('File Selector', callback=file_picker)
                core.add_spacing(name='##space2', count=3)
                core.add_text('File location:')
                core.add_label_text('##filedir',
                                    value='None Selected',
                                    source='directory')
                core.add_spacing(name='##space3', count=3)
                core.add_text('File name:')
                core.add_label_text('##file',
                                    value='None Selected',
                                    source='file_directory')
                core.end()
                core.add_spacing(name='##space4', count=3)
                # Architecture type radio button
                core.add_child('##settings_block',
                               width=350,
                               height=450,
                               show=False)
                core.add_text('Architecture type:')
                core.add_radio_button('radio##1',
                                      items=[
                                          'IBM simulator',
                                          'IBM quantum computer',
                                          'Arbitrary computer coupling'
                                      ],
                                      callback=show_architecture_list,
                                      source='device_type')
                core.add_spacing(name='##space5', count=3)
                # "Create arbitrary coupling" button
                core.add_button('Create custom architecture',
                                callback=create_architecture,
                                show=False)
                core.add_spacing(name='##space11', count=3)
                # Layout radio button
                core.add_text('Quantum circuit layout method:')
                core.add_radio_button(
                    'radio##2',
                    items=['Original IBM layout', 'Advanced SWAP placement'],
                    source='layout_type')
                core.add_spacing(name='##space6', count=3)
                # Optimization level slider
                core.add_text('Optimization level:')
                core.add_slider_int(
                    '##optimization_lvl',
                    default_value=1,
                    min_value=0,
                    max_value=3,
                    tip='drag the slider to select an optimization level',
                    width=300,
                    source='opt_level')
                core.add_spacing(name='##space7', count=3)
                # Number of iterations slider
                core.add_text('Number of iterations:')
                core.add_input_int('##num_of_iter',
                                   width=300,
                                   callback=check_iteration_num,
                                   default_value=100)
                core.add_spacing(name='##space8', count=3)
                # Default settings button
                core.add_button('Set Default', callback=set_default)
                core.end()
                core.add_spacing(name='##space9', count=3)
                # Process button
                core.add_button('Process', callback=process, show=False)

            # graph images
            core.add_same_line(name='line##3', xoffset=370)
            with simple.group('center group'):
                core.add_child('##images_block', width=640, show=False)
                # Input circuit preview
                core.add_text('Input circuit:')
                core.add_drawing('input_circuit', width=600, height=500)
                core.draw_rectangle('input_circuit', [0, 150], [600, 500],
                                    [255, 255, 255, 0], [255, 255, 255, 50])
                # Output circuit view
                core.add_text('Output circuit:')
                core.add_drawing('output_circuit', width=600, height=500)
                core.draw_rectangle('output_circuit', [0, 150], [600, 500],
                                    [255, 255, 255, 0], [255, 255, 255, 50])
                core.end()

            # program output
            core.add_same_line(name='line##3', xoffset=1020)
            with simple.group('right group'):
                core.add_child('##output_block1',
                               width=460,
                               height=300,
                               show=False)
                core.add_button('Open qasm file', callback=open_qasm)
                core.add_text('Path to IBM circuit representation')
                core.add_label_text('##circuitImage')
                core.add_button('Mapping', callback=show_mapping)
                core.end()
                core.add_text('Program output:', show=False)
                core.add_child('##output_block2',
                               width=460,
                               height=180,
                               show=False)
                core.add_text('Program output will be displayed here',
                              wrap=440)
                core.end()

        except Exception as exc:
            print("[ERROR]: {}".format(exc))
    def construct(self):
        with simple.group(self.name, parent=self.parent):
            # GUI elements for the algorithm selection ########################
            core.add_group("algorithm_input##labels",
                           horizontal=True,
                           horizontal_spacing=90)
            core.add_text("Available algorithms")
            core.add_text("Selected algorithms")
            core.end()  # algorithm_input##labels

            core.add_group("algorithm_input#lists",
                           horizontal=True,
                           horizontal_spacing=0)
            core.add_listbox(
                "algorithm_selector##available",
                label="",
                items=self.available_algorithms,
                width=220,
            )
            core.add_listbox(
                "algorithm_selector##selected",
                label="",
                items=self.selected_algorithms,
                width=220,
            )
            core.end()  # algorithm_input##lists

            def move(src, dest, gui_element):
                if len(src):
                    current = core.get_value(gui_element)
                    item = src.pop(current)
                    dest.append(item)
                    self.update_listbox()

            def move_all(src, dest):
                for i in src:
                    dest.append(i)
                src.clear()
                self.update_listbox()

            def add(sender):
                move(
                    self.available_algorithms,
                    self.selected_algorithms,
                    "algorithm_selector##available",
                )

            def add_all(sender):
                move_all(self.available_algorithms, self.selected_algorithms)

            def remove(sender):
                move(
                    self.selected_algorithms,
                    self.available_algorithms,
                    "algorithm_selector##selected",
                )

            def remove_all(sender):
                move_all(self.selected_algorithms, self.available_algorithms)

            core.add_group("algorithm_input##buttons", horizontal=True)
            core.add_button("Add", width=107, callback=add)
            core.add_button("Add all", width=107, callback=add_all)
            core.add_button("Remove", width=107, callback=remove)
            core.add_button("Remove all", width=107, callback=remove_all)
            core.end()  # algorithm_input##buttons
            core.add_button(
                "Execute",
                callback=self.execute_algorithms,
                callback_data=self.selected_algorithms,
            )

            # GUI elements for the metrics display ################################
            core.add_radio_button("metrics",
                                  items=["Elapsed times", "Expanded nodes"],
                                  callback=self.handle_metric,
                                  horizontal=True)
            core.add_plot("Metrics plot")
            core.add_bar_series("Metrics plot", "Metrics", [], [])
            core.set_plot_xlimits("Metrics plot", 0, 6)
示例#8
0
def show_demo():

    with cxt.collapsing_header(label="Drawlists"):

        with cxt.group():

            dpg.add_radio_button(
                ("Layer 1", "Layer 2", "Layer 3"),
                default_value="Layer 1",
                callback=lambda sender: _set_layer(dpg.get_value(sender)))
            dpg.add_listbox(("Line", "Circle"),
                            label="Draw Item",
                            default_value="Line",
                            width=100,
                            callback=_switch_group)

            with cxt.group(width=200) as g:
                global line_group
                line_group = g
                p1_input = dpg.add_input_intx(label="p1",
                                              size=2,
                                              default_value=(10, 10))
                p2_input = dpg.add_input_intx(label="p2",
                                              size=2,
                                              default_value=(100, 100))
                thickness_input = dpg.add_input_int(label="thickness",
                                                    default_value=1)
                color_input = dpg.add_color_picker(label="color",
                                                   default_value=(255, 255,
                                                                  255, 255))
                dpg.add_button(label="Add",
                               callback=lambda: dpg.draw_line(
                                   dpg.get_value(p1_input),
                                   dpg.get_value(p2_input),
                                   thickness=dpg.get_value(thickness_input),
                                   color=dpg.get_value(color_input),
                                   parent=current_layer))

            with cxt.group(show=False, width=200) as g:
                global circle_group
                circle_group = g
                center_input = dpg.add_input_intx(label="center",
                                                  size=2,
                                                  default_value=(100, 100))
                radius_input = dpg.add_input_int(label="radius",
                                                 default_value=20)
                thickness_input = dpg.add_input_int(label="thickness",
                                                    default_value=1)
                seg_input = dpg.add_input_int(label="segments",
                                              default_value=0)
                color_input = dpg.add_color_picker(label="color",
                                                   default_value=(255, 255,
                                                                  255, 255))
                fill_input = dpg.add_color_picker(label="fill",
                                                  default_value=(0, 0, 0, 0),
                                                  alpha_bar=True)
                dpg.add_button(label="Add",
                               callback=lambda: dpg.draw_circle(
                                   dpg.get_value(center_input),
                                   dpg.get_value(radius_input),
                                   thickness=dpg.get_value(thickness_input),
                                   segments=dpg.get_value(seg_input),
                                   color=dpg.get_value(color_input),
                                   fill=dpg.get_value(fill_input),
                                   parent=current_layer))

        dpg.add_same_line()

        with cxt.drawlist(id="drawlist_demo", width=800, height=500):
            global current_layer, layer_1, layer_2, layer_3
            dpg.draw_rectangle((0, 0), (800, 500),
                               color=(100, 100, 100, 250),
                               thickness=2)
            layer_1 = dpg.add_draw_layer()
            layer_2 = dpg.add_draw_layer()
            layer_3 = dpg.add_draw_layer()
            current_layer = layer_1
示例#9
0
        for i in range(len(round_str)):
            core.add_text(round_str[i])
        core.add_text("Cipher Text (after final permuation): " + cipher_text)
    if "pt2" in locals():
        perm_str2, round_str2, cipher_text2 = des.encrypt(pt2, rkb, rk)
        combined_cipher_text = cipher_text + cipher_text2 
        with simple.window(window_name2, width=460, height=375, x_pos=801, y_pos=0):
            core.add_text(perm_str2)
            core.add_text("Round #    Left     Right")
            for i in range(len(round_str2)):
                core.add_text(round_str2[i])
            core.add_text("Cipher Text2 (after final permuation): " + cipher_text2)  
            core.add_text("Combined Cipher Text: " + combined_cipher_text)  

with simple.window("ECB DES Learning Tool", width=350, height=200, x_pos=0, y_pos=0):
    core.add_radio_button("RadioButton##widget", items=["Hex", "Plaintext"], horizontal=True)
    core.add_input_text("Input", height=100)
    core.add_radio_button("RadioButton##widget1", items=["Hex", "Plaintext"], horizontal=True)
    core.add_input_text("Key")
    core.add_button("Decrypt", callback=decrypt)
    core.add_button("Encrypt", callback=encrypt)
    core.add_text("Input must be < 128 bits and key must be 64 bits", color=[255, 0, 0, 255], show=False)
    core.add_text("Cannot Decrypt with plaintext", color=[255, 0, 0, 255], show=False)

# --parity bit drop table
keyp = [57, 49, 41, 33, 25, 17, 9, 
        1, 58, 50, 42, 34, 26, 18, 
        10, 2, 59, 51, 43, 35, 27, 
        19, 11, 3, 60, 52, 44, 36, 
        63, 55, 47, 39, 31, 23, 15, 
        7, 62, 54, 46, 38, 30, 22, 
示例#10
0
def show_demo():

    with cxt.collapsing_header(label="Widgets"):

        with cxt.tree_node(label="Basic"):

            with cxt.group(horizontal=True):
                dpg.add_button(label="Button", callback=_log)
                dpg.add_button(label="Button", callback=_log, small=True)
                dpg.add_button(label="Button", callback=_log,
                               arrow=True)  # default direction is mvDir_Up
                dpg.add_button(label="Button",
                               callback=_log,
                               arrow=True,
                               direction=dpg.mvDir_Left)
                dpg.add_button(label="Button",
                               callback=_log,
                               arrow=True,
                               direction=dpg.mvDir_Right)
                dpg.add_button(label="Button",
                               callback=_log,
                               arrow=True,
                               direction=dpg.mvDir_Down)

            dpg.add_checkbox(label="checkbox", callback=_log)
            dpg.add_radio_button(("radio a", "radio b", "radio c"),
                                 callback=_log,
                                 horizontal=True)
            dpg.add_selectable(label="selectable", callback=_log)

            with cxt.group(horizontal=True) as g:

                for i in range(0, 7):
                    button = dpg.add_button(label="Click", callback=_log)
                    dpg.set_theme_style(dpg.mvThemeStyle_Button_Rounding,
                                        i * 5,
                                        item=button)
                    dpg.set_theme_style(dpg.mvThemeStyle_Button_PaddingX,
                                        i * 3,
                                        item=button)
                    dpg.set_theme_style(dpg.mvThemeStyle_Button_PaddingY,
                                        i * 3,
                                        item=button)
                    dpg.set_theme_color(dpg.mvThemeCol_Button_Bg,
                                        _hsv_to_rgb(i / 7.0, 0.6, 0.6),
                                        item=button)
                    dpg.set_theme_color(dpg.mvThemeCol_Button_Active,
                                        _hsv_to_rgb(i / 7.0, 0.8, 0.8),
                                        item=button)
                    dpg.set_theme_color(dpg.mvThemeCol_Button_Hovered,
                                        _hsv_to_rgb(i / 7.0, 0.7, 0.7),
                                        item=button)

            with cxt.group(horizontal=True):

                dpg.add_text("Press a button: ")
                dpg.add_button(arrow=True,
                               direction=dpg.mvDir_Left,
                               callback=lambda: dpg.set_value(
                                   widget,
                                   int(dpg.get_value(widget)) - 1))
                dpg.add_button(arrow=True,
                               direction=dpg.mvDir_Right,
                               callback=lambda: dpg.set_value(
                                   widget,
                                   int(dpg.get_value(widget)) + 1))
                widget = dpg.add_text("0")

            widget2 = dpg.add_text("hover me")
            with cxt.tooltip(
                    parent=widget2
            ):  # note that "parent" is the item the tooltip show's for
                dpg.add_text("I'm a fancy tooltip")

            dpg.add_separator()

            dpg.add_text("Value", label="Label", show_label=True)
            dpg.add_combo(("AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF",
                           "GGGG", "HHHH", "IIII", "JJJJ", "KKKK"),
                          label="combo",
                          default_value="AAAA",
                          callback=_log)
            dpg.add_input_text(label="input text",
                               default_value="Hello, world!",
                               callback=_log)
            _help("USER:\n"
                  "Hold SHIFT or use mouse to select text.\n"
                  "CTRL+Left/Right to word jump.\n"
                  "CTRL+A or double-click to select all.\n"
                  "CTRL+X,CTRL+C,CTRL+V clipboard.\n"
                  "CTRL+Z,CTRL+Y undo/redo.\n"
                  "ESCAPE to revert.\n\n")
            dpg.add_input_text(label="input text (w/ hint)",
                               hint="enter text here",
                               callback=_log)
            dpg.add_input_int(label="input int", callback=_log)
            dpg.add_input_float(label="input float", callback=_log)
            dpg.add_input_float(label="input scientific",
                                format="%e",
                                callback=_log)
            dpg.add_input_floatx(label="input floatx",
                                 callback=_log,
                                 default_value=[1, 2, 3, 4])
            dpg.add_drag_int(label="drag int", callback=_log)
            _help("Click and drag to edit value.\n"
                  "Hold SHIFT/ALT for faster/slower edit.\n"
                  "Double-click or CTRL+click to input value.")
            dpg.add_drag_int(label="drag int 0..100",
                             format="%d%%",
                             callback=_log)
            dpg.add_drag_float(label="drag float", callback=_log)
            dpg.add_drag_float(label="drag small float",
                               default_value=0.0067,
                               format="%.06f ns",
                               callback=_log)
            dpg.add_slider_int(label="slider int", max_value=3, callback=_log)
            _help("CTRL+click to enter value.")
            dpg.add_slider_float(label="slider float",
                                 max_value=1.0,
                                 format="ratio = %.3f",
                                 callback=_log)
            dpg.add_slider_int(label="slider angle",
                               min_value=-360,
                               max_value=360,
                               format="%d deg",
                               callback=_log)
            _help("Click on the colored square to open a color picker.\n"
                  "Click and hold to use drag and drop.\n"
                  "Right-click on the colored square to show options.\n"
                  "CTRL+click on individual component to input value.\n")
            dpg.add_color_edit((102, 179, 0, 128),
                               label="color edit 4",
                               callback=_log,
                               uint8=True)
            dpg.add_color_edit(default_value=(.5, 1, .25, .1),
                               label="color edit 3",
                               callback=_log,
                               m_3component=True,
                               uint8=True,
                               floats=False)
            dpg.add_listbox(
                ("Apple", "Banana", "Cherry", "Kiwi", "Mango", "Orange",
                 "Pineapple", "Strawberry", "Watermelon"),
                label="listbox",
                num_items=4,
                callback=_log)
            dpg.add_color_button(label="color button")

        with cxt.tree_node(label="Bullets"):

            dpg.add_text("Bullet point 1", bullet=True)
            dpg.add_text(
                "Bullet point 2\nbullet text can be\nOn multiple lines",
                bullet=True)

            with cxt.tree_node(label="Tree node"):
                dpg.add_text("Another bullet point", bullet=True)

            dpg.add_text("1", bullet=True)
            dpg.add_same_line()
            dpg.add_button(label="Button", small=True)

        with cxt.tree_node(label="Text"):

            with cxt.tree_node(label="Colored Text"):

                dpg.add_text("Pink", color=(255, 0, 255))
                dpg.add_text("Yellow", color=(255, 255, 0))

            with cxt.tree_node(label="Word Wrapping"):

                dpg.add_text(
                    'This text should automatically wrap on the edge of the window.The current implementation for the text wrapping follows simple rules suited for English and possibly other languages',
                    wrap=0)
                dpg.add_slider_int(
                    label="wrap width",
                    default_value=500,
                    max_value=1000,
                    callback=lambda sender: dpg.configure_item(
                        "_demo_wrap", wrap=dpg.get_value(sender)))
                dpg.add_text(
                    'The lazy dong is a good dog. This paragraph should fit within the child. Testing a 1 character word. The quick brown fox jumps over the lazy dog.',
                    id="_demo_wrap",
                    wrap=100)

        with cxt.tree_node(label="Text Input"):

            dpg.add_checkbox(label="readonly",
                             callback=_config,
                             callback_data="Multi-line Text Input")
            dpg.add_checkbox(label="on_enter",
                             callback=_config,
                             callback_data="Multi-line Text Input")

            with cxt.tree_node(id="Multi-line Text Input"):

                dpg.add_input_text(
                    multiline=True,
                    default_value="/*\n"
                    " The Pentium F00F bug, shorthand for F0 0F C7 C8,\n"
                    " the hexadecimal encoding of one offending instruction,\n"
                    " more formally, the invalid operand with locked CMPXCHG8B\n"
                    " instruction bug, is a design flaw in the majority of\n"
                    " Intel Pentium, Pentium MMX, and Pentium OverDrive\n"
                    " processors (all in the P5 microarchitecture).\n"
                    "*/\n\n"
                    "label:\n"
                    "\tlock cmpxchg8b eax\n",
                    height=300,
                    callback=_log,
                    tab_input=True)

            with cxt.tree_node(label="Filtered Text Input"):

                dpg.add_input_text(callback=_log, label="default")
                dpg.add_input_text(callback=_log,
                                   label="decimal",
                                   decimal=True)
                dpg.add_input_text(callback=_log,
                                   label="no blank",
                                   no_spaces=True)
                dpg.add_input_text(callback=_log,
                                   label="uppercase",
                                   uppercase=True)
                dpg.add_input_text(callback=_log,
                                   label="scientific",
                                   scientific=True)
                dpg.add_input_text(callback=_log,
                                   label="hexdecimal",
                                   hexadecimal=True)

            with cxt.tree_node(label="Password Input"):

                password = dpg.add_input_text(label="password",
                                              password=True,
                                              callback=_log)
                dpg.add_input_text(label="password (w/ hint)",
                                   password=True,
                                   hint="<password>",
                                   source=password,
                                   callback=_log)
                dpg.add_input_text(label="password (clear)",
                                   source=password,
                                   callback=_log)

        with cxt.tree_node(label="Simple Plots"):

            dpg.add_simple_plot(
                label="Frame Times",
                default_value=[0.6, 0.1, 1.0, 0.5, 0.92, 0.1, 0.2])
            dpg.add_simple_plot(label="Histogram",
                                default_value=(0.6, 0.1, 1.0, 0.5, 0.92, 0.1,
                                               0.2),
                                height=80,
                                histogram=True,
                                minscale=0.0)

            data1 = []
            for i in range(0, 70):
                data1.append(cos(3.14 * 6 * i / 180))

            dpg.add_simple_plot(label="Lines", default_value=data1, height=80)
            dpg.add_simple_plot(label="Histogram",
                                default_value=data1,
                                height=80,
                                histogram=True)
            dpg.add_progress_bar(label="Progress Bar",
                                 default_value=0.78,
                                 overlay="78%")
            dpg.add_same_line()
            dpg.add_text("Progress Bar")
            bar = dpg.add_progress_bar(default_value=0.78, overlay="1367/1753")
            dpg.set_theme_color(dpg.mvThemeCol_ProgressBar_Bar,
                                (255, 0, 0, 255),
                                item=bar)

        with cxt.tree_node(label="Multi-component Widgets"):

            for i in range(2, 5):

                with cxt.group():
                    float_source = dpg.add_input_floatx(
                        label=f"input float {i}",
                        min_value=0.0,
                        max_value=100.0,
                        size=i)
                    dpg.add_drag_floatx(label=f"drag float {i}",
                                        source=float_source,
                                        size=i)
                    dpg.add_slider_floatx(label=f"slider float {i}",
                                          source=float_source,
                                          size=i)

                with cxt.group():

                    int_source = dpg.add_input_intx(label=f"input int {i}",
                                                    min_value=0,
                                                    max_value=100,
                                                    size=i)
                    dpg.add_drag_intx(label=f"drag int {i}",
                                      source=int_source,
                                      size=i)
                    dpg.add_slider_intx(label=f"slider int {i}",
                                        source=int_source,
                                        size=i)

                dpg.add_dummy(height=10)

        with cxt.tree_node(label="Vertical Sliders"):

            dpg.add_slider_int(label=" ",
                               default_value=1,
                               vertical=True,
                               max_value=5,
                               height=160)
            dpg.add_same_line()

            with cxt.group(horizontal=True):

                values = [0.0, 0.60, 0.35, 0.9, 0.70, 0.20, 0.0]

                for i in range(0, 7):
                    widget3 = dpg.add_slider_float(label=" ",
                                                   default_value=values[i],
                                                   vertical=True,
                                                   max_value=1.0,
                                                   height=160)
                    dpg.set_theme_color(dpg.mvThemeCol_SliderFloat_Bg,
                                        _hsv_to_rgb(i / 7.0, 0.5, 0.5),
                                        item=widget3)
                    dpg.set_theme_color(dpg.mvThemeCol_SliderFloat_Grab,
                                        _hsv_to_rgb(i / 7.0, 0.9, 0.9),
                                        item=widget3)
                    dpg.set_theme_color(dpg.mvThemeCol_SliderFloat_BgActive,
                                        _hsv_to_rgb(i / 7.0, 0.7, 0.5),
                                        item=widget3)
                    dpg.set_theme_color(dpg.mvThemeCol_SliderFloat_BgHovered,
                                        _hsv_to_rgb(i / 7.0, 0.6, 0.5),
                                        item=widget3)

            dpg.add_same_line()
            with cxt.group():
                for i in range(0, 3):
                    with cxt.group(horizontal=True):
                        values = [0.20, 0.80, 0.40, 0.25]
                        for j in range(0, 4):
                            dpg.add_slider_float(label=" ",
                                                 default_value=values[j],
                                                 vertical=True,
                                                 max_value=1.0,
                                                 height=50)

            dpg.add_same_line()
            with cxt.group(horizontal=True):
                dpg.add_slider_float(label=" ",
                                     vertical=True,
                                     max_value=1.0,
                                     height=160,
                                     width=40)
                dpg.add_slider_float(label=" ",
                                     vertical=True,
                                     max_value=1.0,
                                     height=160,
                                     width=40)
                dpg.add_slider_float(label=" ",
                                     vertical=True,
                                     max_value=1.0,
                                     height=160,
                                     width=40)
                dpg.add_slider_float(label=" ",
                                     vertical=True,
                                     max_value=1.0,
                                     height=160,
                                     width=40)

        with cxt.tree_node(label="Time/Date Widgets"):

            dpg.add_time_picker(label="Time Picker",
                                default_value={
                                    'hour': 14,
                                    'min': 32,
                                    'sec': 23
                                })
            dpg.add_separator()

            with cxt.table(header_row=False):

                dpg.add_table_column()
                dpg.add_table_column()
                dpg.add_table_column()

                dpg.add_date_picker(label="Date Picker1",
                                    level=0,
                                    default_value={
                                        'month_day': 8,
                                        'year': 93,
                                        'month': 5
                                    })
                dpg.add_table_next_column()
                dpg.add_date_picker(label="Date Picker2",
                                    level=1,
                                    default_value={
                                        'month_day': 8,
                                        'year': 93,
                                        'month': 5
                                    })
                dpg.add_table_next_column()
                dpg.add_date_picker(label="Date Picker3",
                                    level=2,
                                    default_value={
                                        'month_day': 8,
                                        'year': 93,
                                        'month': 5
                                    })

        with cxt.tree_node(label="Loading Indicators"):

            dpg.add_loading_indicator()
            dpg.add_same_line()
            dpg.add_loading_indicator(style=1)

        with cxt.tree_node(label="Knobs"):

            with cxt.group(horizontal=True):

                dpg.add_knob_float(label="K1")
                dpg.add_knob_float(label="K2", default_value=25.0)
                dpg.add_knob_float(label="K3", default_value=50.0)

        with cxt.tree_node(label="2D/3D Sliders"):

            dpg.add_3d_slider(label="3D Slider", scale=0.5)
示例#11
0
 def _setup_add_widget(self, dpg_args) -> None:
     dpgcore.add_radio_button(self.id, **dpg_args)
示例#12
0
            dpg.add_checkbox(label="no_bring_to_front_on_focus", callback=_config, callback_data=demo_id)

    with cxt.collapsing_header(label="Widgets"):
        
        with cxt.tree_node(label="Basic"):

            with cxt.group(horizontal=True):
                dpg.add_button(label="Button", callback=_log)
                dpg.add_button(label="Button", callback=_log, small=True)
                dpg.add_button(label="Button", callback=_log, arrow=True) # default direction is mvDir_Up
                dpg.add_button(label="Button", callback=_log, arrow=True, direction=dpg.mvDir_Left)
                dpg.add_button(label="Button", callback=_log, arrow=True, direction=dpg.mvDir_Right)
                dpg.add_button(label="Button", callback=_log, arrow=True, direction=dpg.mvDir_Down)

            dpg.add_checkbox(label="checkbox", callback=_log)
            dpg.add_radio_button(("radio a", "radio b", "radio c"), callback=_log, horizontal=True)
            dpg.add_selectable(label="selectable", callback=_log)

            with cxt.group(horizontal=True) as g:

                for i in range(0, 7):
                    button = dpg.add_button(label="Click", callback=_log)
                    dpg.set_theme_style(dpg.mvThemeStyle_Button_Rounding, i*5, item=button)
                    dpg.set_theme_style(dpg.mvThemeStyle_Button_PaddingX, i*3, item=button)
                    dpg.set_theme_style(dpg.mvThemeStyle_Button_PaddingY, i*3, item=button)
                    dpg.set_theme_color(dpg.mvThemeCol_Button_Bg, _hsv_to_rgb(i/7.0, 0.6, 0.6), item=button)
                    dpg.set_theme_color(dpg.mvThemeCol_Button_Active, _hsv_to_rgb(i/7.0, 0.8, 0.8), item=button)
                    dpg.set_theme_color(dpg.mvThemeCol_Button_Hovered, _hsv_to_rgb(i/7.0, 0.7, 0.7), item=button)

            with cxt.group(horizontal=True):