def initialize_base_screens(self): """ Loads up input font and sets up development windows. """ # font = list(Path("").absolute().parent.glob("**/InputMono-Black.ttf")) check_pipx = Path().home() / ".local/pipx/venvs/clockpuncher" if check_pipx.exists() is True: font = list(check_pipx.glob("**/fonts/InputMono-Black.ttf")) if font and font[0].exists(): c.add_additional_font(file=str(font[0]), size=16) elif check_pipx.exists() is False: font = list( Path(__file__).resolve().parents[2].glob( "**/fonts/InputMono-Black.ttf")) if font and font[0].exists(): c.add_additional_font(str(font[0].absolute()), size=16) else: print("Cannot load font") c.set_main_window_title(self.title) c.set_main_window_size(*self.window_size) c.set_style_window_rounding(0) if self.development: c.set_main_window_pos(x=1120, y=0) start_development_windows(self.logger) else: c.set_main_window_resizable(False)
def show(self): """Start the gui.""" dpg.set_main_window_size(550, 550) dpg.set_main_window_resizable(False) dpg.set_main_window_title("Dearpygui Todo App") dpg.add_text("Todo App") dpg.add_text( "Add a todo by writing a title and clicking" " the add todo button", bullet=True) dpg.add_text("Toggle a todo by clicking on its table row", bullet=True) dpg.add_text( "Remove a todo by clicking on its table row and clicking" " the remove todo button", bullet=True) dpg.add_separator() dpg.add_spacing(count=10) dpg.add_input_text("New Todo Title", source="new-todo-title") dpg.add_button("Add todo", callback=self.__add_todo) dpg.add_spacing(count=10) dpg.add_separator() dpg.add_table('Todos', ['ID', 'Content', 'Done'], height=200, callback=self.__toggle_todo) dpg.add_separator() dpg.add_text("Selected todo:") dpg.add_button("Remove todo", callback=self.__remove_todo) dpg.add_button("Clear todos", callback=self.__clear_todos) # Render Callback and Start gui dpg.set_render_callback(self.__render) dpg.start_dearpygui()
def construct(self): core.set_main_window_title("Pathfinder") core.set_main_window_pos(0, 0) core.set_main_window_size(width=self.width, height=self.height) core.set_main_window_resizable(resizable=False) with simple.window("main_window"): core.add_group("main_panel", parent="main_window", horizontal=True) # MapDisplay ###################################################### map_display = MapDisplay("map_display", parent="main_panel", tile_radius=1, latitude=47.4751158, longitude=19.0057389) map_display.construct() # InputPanel ###################################################### core.add_group("user_panel", parent="main_panel", horizontal=False) input_panel = InputPanel("input_panel", parent="user_panel", map_display=map_display) input_panel.construct() execution_panel = ExecutionPanel("execution_panel", parent="user_panel", plotter=map_display) execution_panel.construct() core.end() # user_panel ################################################################### core.end() # main_panel
def show(self): """Start the gui.""" with sdpg.window("Main Window"): dpg.set_main_window_size(550, 650) dpg.set_main_window_resizable(False) dpg.add_spacing() dpg.set_main_window_title("Dearpygui File Zip") dpg.add_spacing() dpg.add_text("File Zip App") dpg.add_spacing() dpg.add_text("Select files to zip by adding them to the table", bullet=True) dpg.add_text("Set the output directory", bullet=True) dpg.add_text("Click on the table to remove a file", bullet=True) dpg.add_text("Click on the zip files button to zip all the files", bullet=True) dpg.add_text( "If you do not choose a directory, it will by default be" "the same directory from where you've run this script.", bullet=True) dpg.add_spacing() dpg.add_separator() dpg.add_spacing(count=10) dpg.add_button("Select output directory", width=250, callback=self.__select_output_directory) dpg.add_same_line() dpg.add_button("Add file", width=250, callback=self.__select_file) dpg.add_spacing(count=10) dpg.add_separator() dpg.add_text("Selected output directory:") dpg.add_table('Files', ['Path', 'Name'], height=200, callback=self.__remove_file) dpg.add_separator() dpg.add_progress_bar('Zip Progress', width=-1) dpg.add_separator() dpg.add_button("Clear files", width=250, callback=self.__clear_files) dpg.add_same_line() dpg.add_button("Zip Files", width=250, callback=self.__zip_files) dpg.add_spacing() dpg.add_label_text('##warnings') # Render Callback and Start gui dpg.set_render_callback(self.__render) dpg.start_dearpygui(primary_window="Main Window")
def show(self): """Start the gui.""" with sdpg.window("Main Window"): dpg.set_main_window_size(550, 600) dpg.set_main_window_resizable(False) dpg.set_main_window_title("Stockify") dpg.add_text("Stockify: The Future of Stocks") dpg.add_text( "Predict a stock by typing in its ticker and clicking" " the predict stock button", bullet=True, ) dpg.add_text( "Remove a stock by clicking on its table row and clicking" " the remove stock button", bullet=True, ) dpg.add_text( "All predictions will predict a stocks value " "in 30 days", bullet=True, ) dpg.add_text( "Confidence is the degree that Stockify" " is sure about its prediction", bullet=True, ) dpg.add_separator() dpg.add_spacing(count=10) dpg.add_input_text("Stock Ticker", source="stock-ticker") dpg.add_button("Predict Stock", callback=self.__add_stock) dpg.add_spacing(count=10) dpg.add_separator() dpg.add_table( "Stocks", ["Stock", "Prediction", "Confidence"], height=200, callback=self.__toggle_stock, ) dpg.add_separator() dpg.add_text("Selected stock:") dpg.add_button("Remove stock", callback=self.__remove_stock) dpg.add_button("Clear stocks", callback=self.__clear_stocks) # Render Callback and Start gui dpg.set_render_callback(self.__render) dpg.start_dearpygui(primary_window="Main Window")
def allow_resize(enabled: bool): dpgcore.set_main_window_resizable(enabled)
def main(): center_items = [] core.add_data('item_center_list', center_items) with simple.window(TITLE): with simple.menu_bar('##menu_bar'): with simple.menu('File'): # core.add_menu_item('Import', callback=None) # core.add_menu_item('Export', callback=None) with simple.menu('Theme'): themes = ['Dark', 'Light', 'Classic', 'Dark 2', 'Grey', 'Dark Grey', 'Cherry', 'Purple', 'Gold', 'Red'] for theme in themes: core.add_menu_item(theme, callback=menu.update_theme) # core.add_menu_item('Exit', callback=None) with simple.menu('About'): core.add_menu_item('Version', callback=menu.show_version) with simple.group('##input_group'): # Title input core.add_text('Title:') core.add_input_text(TITLE_ID, hint='Enter title', width=WIDGET_WIDTH) core.add_spacing(count=2) # Identifier input core.add_text('Identifier:') core.add_input_text(IDENTIFIER_ID, hint='Enter identifier', width=WIDGET_WIDTH) core.add_spacing(count=2) # Password input core.add_text('Password:'******'Enter password', width=WIDGET_WIDTH) core.add_spacing(count=2) # Note input core.add_text('Note:') core.add_input_text(NOTE_ID, hint='Enter note info', width=WIDGET_WIDTH) core.add_spacing(count=10) # Save button save_clear_spacing = 50 core.add_button('##save', label='Save', callback=input_field.save_password, width=WIDGET_HALF_WIDTH - (save_clear_spacing // 2)) core.set_item_color('##save', core.mvGuiCol_Button, color=GREEN) core.add_same_line(spacing=save_clear_spacing) # Clear input entry button core.add_button('##clear_input', label='Clear input', callback=input_field.clear_input, width=WIDGET_HALF_WIDTH - (save_clear_spacing // 2)) core.add_spacing(count=20) with simple.group('##log_group'): # Logger core.add_logger('##log_message', auto_scroll_button=False, copy_button=False, filter=False, clear_button=False, width=WIDGET_WIDTH, height=80) core.set_log_level(core.mvTRACE, logger='##log_message') core.add_spacing(count=10) # Clear log button core.add_button('##clear_log', label='Clear log', callback=logger.clear_log, width=WIDGET_WIDTH) core.add_spacing(count=10) with simple.group('##password_table_group'): # Password table header = ['No', 'Title', 'Identifier', 'Password', 'Note'] core.add_table('##password_table', header, callback=table.table_printer, height=int(WINDOW_HEIGHT * 0.45), width=WIDGET_WIDTH) core.add_spacing(count=10) table.update_password_table() # Update password table button update_delete_spacing = 20 core.add_button('##update_table', label='Update table', callback=table.update_password_table, width=WIDGET_HALF_WIDTH - (update_delete_spacing // 2)) core.set_item_color('##update_table', core.mvGuiCol_Button, color=BLUE) core.add_same_line(spacing=update_delete_spacing) # Delete password table button core.add_button('##delete_table', label='Delete table', width=WIDGET_HALF_WIDTH - (update_delete_spacing // 2)) core.set_item_color('##delete_table', core.mvGuiCol_Button, color=RED) with simple.popup('##delete_table', '##ask_delete', mousebutton=core.mvMouseButton_Left, modal=True): with simple.group('##delete_table_button_group'): delete_table_spacing = 10 delete_table_half_width = core.get_main_window_size()[1] // 5 - delete_table_spacing core.add_text('##delete_table_button', default_value='Are you sure to delete all data?') core.add_spacing(count=delete_table_spacing) core.add_button('##delete_table_button_yes', label='Yes', callback=table.delete_password_table, callback_data=True, width=delete_table_half_width) core.add_same_line(spacing=delete_table_spacing) core.add_button('##delete_table_button_no', label='No', callback=table.delete_password_table, callback_data=False, width=delete_table_half_width) # TODO WONT WORK NEED TO FIX center_item FUNCTION # center_item('##delete_table_button') # center_item('##delete_table_button_yes') # center_item('##delete_table_button_no') # center_item('##delete_table_button_group') if DEBUG_MODE: # core.show_logger() simple.show_debug() # simple.show_documentation() # Common Configuration core.set_theme(DEFAULT_THEME) core.add_additional_font(FONT, FONT_SIZE) core.set_main_window_title(TITLE) core.set_main_window_size(WINDOW_WIDTH, WINDOW_HEIGHT) core.set_main_window_resizable(RESIZABLE) core.set_style_window_padding(WINDOW_PADDING, WINDOW_PADDING) core.set_exit_callback(model.close_connection) # core.set_render_callback(apply_centering) core.start_dearpygui(primary_window=TITLE)
def build(self): with simple.window("game_win", autosize=True): with simple.group("player"): left_label_text("Round: ", "round", default_value=str(self.round)) left_label_text("Player: ", "player", default_value=self.player.name) left_label_text("Cash: ", "cash", default_value=str(self.player.cash)) core.add_spacing(count=5) core.add_button("next_round", label="Next round", callback=self.next_round) core.add_spacing(count=5) core.add_separator() core.add_spacing(count=5) with simple.group("stocks"): # Titles core.add_text("Company") core.add_same_line(xoffset=stock_table_offsets[1]) core.add_text("Price") core.add_same_line(xoffset=stock_table_offsets[2]) core.add_text("Owned") core.add_same_line(xoffset=stock_table_offsets[3]) core.add_text("Change") core.add_same_line(xoffset=stock_table_offsets[4]) core.add_text("Old price") core.add_same_line(xoffset=stock_table_offsets[5]) core.add_text("New price") core.add_same_line(xoffset=stock_table_offsets[6]) core.add_text("Dividend") for stock in self.stocks: core.add_text(stock.name) core.add_same_line(xoffset=stock_table_offsets[1]) core.add_text(f"stock.{stock.name}.price", default_value=str(stock.price)) core.add_same_line(xoffset=stock_table_offsets[2]) # Buy / Sell functionality core.add_input_int( f"stock.{stock.name}.owned", label="", default_value=self.player.get_owned_stocks(stock), max_value=int(self.player.cash / stock.price), min_clamped=True, max_clamped=True, callback=self.buy_or_sell, callback_data=[ stock, ], width=100, ) core.add_same_line(xoffset=stock_table_offsets[3]) core.add_text(f"stock.{stock.name}.change", default_value=str(stock.change)) core.add_same_line(xoffset=stock_table_offsets[4]) core.add_text( f"stock.{stock.name}.previous_price", default_value=str(stock.previous_price), ) core.add_same_line(xoffset=stock_table_offsets[5]) core.add_text(f"stock.{stock.name}.price2", default_value=str(stock.price)) core.add_same_line(xoffset=stock_table_offsets[6]) core.add_text( f"stock.{stock.name}.dividend", default_value=str(stock.dividend), ) core.set_main_window_title("Stock Trader") core.set_main_window_size(650, 450) core.set_main_window_resizable(False)
def main(): empty_board = [['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E']] initial_board = [['Tn','Cn','An','Dn','Rn','An','Cn','Tn'], ['Pn','Pn','Pn','Pn','Pn','Pn','Pn','Pn'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['_E','_E','_E','_E','_E','_E','_E','_E'], ['Pb','Pb','Pb','Pb','Pb','Pb','Pb','Pb'], ['Tb','Cb','Ab','Db','Rb','Ab','Cb','Tb']] def mouse_click_callback(sender,data): nonlocal c_board if data == 0 and c_board.current_selection != -1: m_position = dpg.get_mouse_pos() position = c_board.get_board_position(m_position) if not position: return if c_board.current_selection == 0: c_board.change_box('P', position) # put peon elif c_board.current_selection == 1: c_board.change_box('T', position) # put toker elif c_board.current_selection == 2: c_board.change_box('C', position) # put horse elif c_board.current_selection == 3: c_board.change_box('A', position) # put bishop elif c_board.current_selection == 4: c_board.change_box('D', position) # put queen elif c_board.current_selection == 5: c_board.change_box('R', position) # put king elif c_board.current_selection == 6: c_board.change_box(None,position) # remove elif c_board.current_selection == 7: # draw arrow size = c_board.piece_size c = size//2 position = (position[0]*size+c,position[1]*size+c) if c_board.step == 0: c_board.lines.append([(),(),'']) c_board.lines[-1][0] = position elif c_board.step == 1: c_board.lines[-1][1] = position color = dpg.get_value('drawing_color') r = int(color[0]) g = int(color[1]) b = int(color[2]) color = 'rgb({},{},{})'.format(r,g,b) c_board.lines[-1][2] = color c_board.step = (c_board.step+1)%2 if c_board.step == 1: return elif c_board.current_selection == 8: # delete arrow size = c_board.piece_size c = size//2 position = (position[0]*size+c,position[1]*size+c) for i in range(len(c_board.lines)): line = c_board.lines[i] if position == line[0] or position == line[1]: c_board.lines.remove(line) break elif c_board.current_selection == 9: # color box color = dpg.get_value('drawing_color') r = int(color[0]) g = int(color[1]) b = int(color[2]) color = 'rgb({},{},{})'.format(r,g,b) col = position[0] row = position[1] c_board.colored_boxes[row][col] = color elif c_board.current_selection == 10: # discolor box col = position[0] row = position[1] c_board.colored_boxes[row][col] = None c_board.draw_board() if data == 1: if c_board.piece_color == 'b': c_board.piece_color = 'n' dpg.set_value('color_piece', "Negro") else: c_board.piece_color = 'b' dpg.set_value('color_piece', "Blanco") def key_press_callback(sender, data): nonlocal c_board if data == dpg.mvKey_Right: if c_board.reading_pgn: pars.current_match.next_position() c_board.draw_board() else: return if data == dpg.mvKey_Left: if c_board.reading_pgn: pars.current_match.previews_position() c_board.draw_board() else: return if data == dpg.mvKey_Escape : c_board.current_selection = -1 c_board.reading_pgn = False dpg.set_value("accion", "Sin seleccionar") dpg.set_value("pieza", "Sin seleccionar") return def load_callback(sender, data): def file_callback(sender, data): nonlocal c_board file = open(data[1],'rb') load_board = pickle.load(file) file.close() c_board = load_board c_board.draw_board() dpg.open_file_dialog(callback=file_callback, extensions=".sv") def save_callback(sender, data): nonlocal c_board c_board.save_board() def save_image_callback(sender,data): nonlocal c_board c_board.save_board_image() def clean_callback(sender, data): nonlocal c_board nonlocal empty_board c_board.reading_pgn = False c_board.board = copy.deepcopy(empty_board) c_board.lines = [] c_board.colored_boxes = [[None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None]] c_board.draw_board() def default_board_callback(sender, data): nonlocal c_board nonlocal initial_board c_board.reading_pgn = False c_board.board = copy.deepcopy(initial_board) c_board.lines = [] c_board.colored_boxes = [[None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None], [None,None,None,None,None,None,None,None]] c_board.draw_board() def close(sender,data): try: os.remove("tmp.png") except Exception as e: pass def pgn_reader(sender,data): def load_match(sender,data): nonlocal pars nonlocal c_board coords = dpg.get_table_selections(sender) dpg.delete_item('Partidas') dpg.delete_item('Lista de Partidas') i = coords[0][0] match = pars.matches[i] pars.current_match = match c_board.board = match.board c_board.reading_pgn = True dpg.set_value('accion','Leyendo partida PGN') dpg.set_value('pieza','Sin seleccionar') c_board.draw_board() def close_callback(sender,data): dpg.delete_item('Partidas') dpg.delete_item('Lista de Partidas') def file_callback(sender, data): nonlocal c_board nonlocal pars pars = Parser() pars.get_plays(data[0]+'/'+data[1]) # Lista de partidas cargadas--------------------------------TODO dpg.add_window('Lista de Partidas',on_close=close_callback) colums = set() for match in pars.matches: for att in match.attr: colums.add(att) colums = list(colums) # colums.sort() dpg.add_table("Partidas", colums, callback=load_match) rows = list() for match in pars.matches: row = list() for colum in colums: row.append(match.attr[colum]) rows.append(row) for row in rows: dpg.add_row("Partidas", row) dpg.end() dpg.open_file_dialog(callback=file_callback, extensions=".pgn") def control_button(sender,data): nonlocal c_board; c_board.reading_pgn = False add_arr = c_board.current_selection == 7 if add_arr and c_board.step == 1: c_board.lines.pop() c_board.step = 0 if sender == 'Peon': c_board.current_selection = 0 dpg.set_value("accion", "Añadiendo Pieza") dpg.set_value("pieza", "Peon") elif sender == 'Torre': c_board.current_selection = 1 dpg.set_value("accion", "Añadiendo Pieza") dpg.set_value("pieza", "Torre") elif sender == 'Caballo': c_board.current_selection = 2 dpg.set_value("accion", "Añadiendo Pieza") dpg.set_value("pieza", "Caballo") elif sender == 'Alfil': c_board.current_selection = 3 dpg.set_value("accion", "Añadiendo Pieza") dpg.set_value("pieza", "Alfil") elif sender == 'Reina': c_board.current_selection = 4 dpg.set_value("accion", "Añadiendo Pieza") dpg.set_value("pieza", "Reina") elif sender == 'Rey': c_board.current_selection = 5 dpg.set_value("accion", "Añadiendo Pieza") dpg.set_value("pieza", "Rey") elif sender == 'Eliminar Pieza': c_board.current_selection = 6 dpg.set_value("accion", "Eliminando Pieza") dpg.set_value("pieza", "Sin seleccionar") elif sender == 'Añadir flecha': c_board.current_selection = 7 dpg.set_value("accion", "Añadiendo flecha") dpg.set_value("pieza", "Sin seleccionar") elif sender == 'Eliminar flecha': c_board.current_selection = 8 dpg.set_value("accion", "Eliminando flecha") dpg.set_value("pieza", "Sin seleccionar") elif sender == 'Colorear casilla': c_board.current_selection = 9 dpg.set_value("accion", "Coloreando casilla") dpg.set_value("pieza", "Sin seleccionar") elif sender == 'Descolorear casilla': c_board.current_selection = 10 dpg.set_value("accion", "Descolorando casilla") dpg.set_value("pieza", "Sin seleccionar") c_board = Board(board = copy.deepcopy(empty_board)) pars = Parser() main_width = c_board.size+220 main_height= c_board.size+240 with dpgs.window('Diagramador'): dpg.set_main_window_size(main_width, main_height) dpg.set_main_window_resizable(False) dpg.set_exit_callback(close) with menu_bar('Menu bar'): with menu('Archivo'): dpg.add_menu_item("Guardar", callback=save_callback) dpg.add_menu_item("Guardar Imagen", callback=save_image_callback) dpg.add_menu_item("Cargar tablero", callback=load_callback) with menu('Herramientas'): dpg.add_menu_item("Leer archivo PGN", callback=pgn_reader) with menu('Color'): dpg.add_color_edit3('Seleccion de Color',source='drawing_color') dpg.add_drawing("canvas", width=c_board.size,height=c_board.size) dpg.add_image('board_img','',source=c_board.piece_p('Abb')) dpg.add_same_line() controles =( "\nControles\n" "Click Derecho : Cambiar color de pieza\n\n" "Flecha derecha: Mostrar siguiente jugada PGN\n\n" "Flecha izquierda: Mostrar la jugada PGN previa\n\n" ) dpg.add_child('controls',autosize_x=True,height=c_board.size) dpg.add_button('Peon',callback=control_button) dpg.add_button('Torre',callback=control_button) dpg.add_button('Caballo',callback=control_button) dpg.add_button('Alfil',callback=control_button) dpg.add_button('Reina',callback=control_button) dpg.add_button('Rey',callback=control_button) dpg.add_button('Eliminar Pieza',callback=control_button) dpg.add_button('Añadir flecha',callback=control_button) dpg.add_button('Eliminar flecha',callback=control_button) dpg.add_button('Colorear casilla',callback=control_button) dpg.add_button('Descolorear casilla',callback=control_button) dpg.add_text(controles) dpg.end() dpg.set_value('drawing_color',[0,0,0]) name = "Nombre de Archivo" dpg.add_input_text(name, width=250, source='save_name') name = "Nombre de Imagen" dpg.add_input_text(name, width=250, source='save_img_name') dpg.add_button("Limpiar tablero", callback=clean_callback) name = "Tablero por defecto" dpg.add_button(name, callback=default_board_callback) name = "Acción" dpg.add_label_text(name, default_value='Sin seleccionar', source="accion") dpg.add_label_text("Pieza", default_value='Sin seleccionar', source="pieza") dpg.add_label_text("Color de pieza", default_value='Blanco', source='color_piece') c_board.draw_board() dpg.set_key_press_callback(key_press_callback) dpg.set_mouse_click_callback(mouse_click_callback) dpg.start_dearpygui(primary_window = 'Diagramador')