def load(self, path, filename): donnees = pd.read_table(os.path.join(path, filename[0]), sep='\t', header=0) self.titre = "Echantillon: " + donnees["Sample Name"][1] print(os.path.join(path, filename[0])) M, F, P, Echantillon_F, log = Traitement2.lecture_fichier( os.path.join(path, filename[0])) """ Maintenant concernant le fait que les biologistes puissent changer les seuils, j'ai ajoute des setters sur la classe Echantillon egalement. Il est important que tu mettes en place les nouvelles valeurs ici avant de faire passer le tout dans "traitement_donnees". Sinon tes modifs n'auront pas lieu. Voilà les lignes de code :""" Echantillon_F.set_seuil_hauteur(self.hauteur) Echantillon_F.set_seuil_taux_conta(self.conta) Echantillon_F.set_seuil_nbre_marqueurs(self.nb) Traitement2.Echantillon.analyse_donnees(Echantillon_F, M, F, log) resultats, conclusion, log = Echantillon_F.analyse_donnees(M, F, log) nv_onglets = TabbedPanelHeader(text=str(donnees["Sample Name"][1]), background_color=(75 * 3 / 255, 127 * 3 / 255, 209 * 3 / 255, 1)) contenu_res = ResAnalyse(titre="Echantillon: " + donnees["Sample Name"][1] + "\n" + "\n", NvGroupe=len(self.ids.les_onglets.tab_list)) contenu_res.remplissage(resultats, conclusion, Echantillon_F.get_conclusion()) nv_onglets.content = contenu_res self.ids.les_onglets.add_widget(nv_onglets) self.ids.les_onglets.switch_to(nv_onglets, do_scroll=True) self.dismiss_popup()
def __init__(self, plot_handler, arbin_test, root=None, *args, **kwargs): super().__init__(*args, **kwargs) TabbedPanelHeader.add_widget(self, CloseableHeaderOverLay(self)) ### input parameters self.plot_handler = plot_handler self.arbin_test = arbin_test self.root = root ### get items to create plot tab figure = self.plot_handler.figure # self.figure = figure canvas = FigureCanvasKivyAgg(figure) ### define plot tab and add to self self.plot_tab = PlotTab(actual_parent=self) self.plot_tab.add_widget(canvas) self.add_widget(self.plot_tab) if self.arbin_test.cell_build_info is not None: mass_header = configuration.parser['settings']['mass_header'] mass = self.arbin_test.cell_build_info[mass_header] self.plot_tab.ids.mass_input.text = str(mass) ### get my nav bar # self.nav_bar = NavigationToolbar2Kivy(canvas) self.nav_bar = CustomKivyNavBar(canvas) try: setattr(self.nav_bar.actionbar, 'background_image', '') setattr(self.nav_bar.actionbar, 'background_color', (.5, .47, .5, 0.7)) except Exception as e: print(e) self.plt_canvas = canvas
def create_new_class(self, create_class_list_widget, class_name): # TO DO: creating class and then immediately removing class doesn't work if not len(create_class_list_widget.student_widgets): print('Class is empty!') return path = os.path.join('records', class_name.strip().replace(' ', '_') + '.db') if os.path.exists(path): print('Error! Class already exists!') return print('Creating New Class:', path) db = open(path, 'w') conn = sqlite3.connect(path) curs = conn.cursor() db_cons.append(conn) db_curs.append(curs) db_manager.reset(curs, True) for i, w in enumerate(create_class_list_widget.student_widgets): print(w.name) db_manager.add_user(curs, i, w.name) tab = TabbedPanelHeader(text=class_name) tab.content = StudentList(len(self.student_main.class_tabs)) self.student_main.class_tabs.append(tab) self.student_main.add_widget(tab) # db_manager.close(conn) self.dismiss_create_class_popup()
def __init__(self, **kwargs): super(MainWidget, self).__init__(**kwargs) self.do_default_tab = False self.tab_width = 200 self.UsRoster = TabbedPanelHeader(text='Our Team') self.ThemRoster = TabbedPanelHeader(text='Their Team') self.UsRoster.content = Roster() self.UsRoster.content.name = 'Us' self.ThemRoster.content = Roster() self.ThemRoster.content.name = 'Them' self.add_widget(self.UsRoster) self.add_widget(self.ThemRoster) self.VMeet = TabbedPanelHeader(text='Varsity Meet') self.JVMeet = TabbedPanelHeader(text='Junior Varsity Meet') self.VMeet.content = DualMeet() self.JVMeet.content = DualMeet() self.add_widget(self.VMeet) self.add_widget(self.JVMeet) self.JVMeet.content.UsRoster = self.UsRoster.content self.JVMeet.content.ThemRoster = self.ThemRoster.content self.JVMeet.content.Daddy = self self.VMeet.content.UsRoster = self.UsRoster.content self.VMeet.content.ThemRoster = self.ThemRoster.content self.VMeet.content.Daddy = self self.VMeet.content.populate() self.JVMeet.content.populate()
def crear_tab(materia): global estante global libreria th = TabbedPanelHeader(text=materia) layout_del_content=GridLayout(cols=1,spacing=[10,10],padding=[10,10],size_hint_y=None) layout_del_content.bind(minimum_height=layout_del_content.setter('height')) #habilitar el scrolliing my_scroll_view=ScrollView(size_hint=(1, None), size=(libreria.width,libreria.height-100)) my_scroll_view.add_widget(layout_del_content) th.content=my_scroll_view #rescatamos referencia al contenedor de la tabla #materias.append() estante.add_widget(th)
def __init__(self, **kwargs): super(PartnerUpdate, self).__init__(**kwargs) self.select_partner_tab = TabbedPanelHeader(text = 'Children') self.communication_tab = TabbedPanelHeader(text = 'Communication') self.add_widget(self.select_partner_tab, 0) self.add_widget(self.communication_tab, 0) self.content.do_layout()
def __init__(self, **kwargs): super(AdminTabbedPanel, self).__init__(**kwargs) self.do_default_tab = False self.tab_pos = 'top_mid' # Layouts in tabs self.estimators_layout = EstimatorsLayout() self.users_layout = UsersLayout() self.users_vs_estimators_layout = UsersVSEstimatorsLayout() # self.activity_logs_layout = ActivityLogsLayout() self.admin_profile_layout = AdminProfileLayout() # Adding tabbed panel headers self.add_widget( TabbedPanelHeader(text='Estimators', content=self.estimators_layout)) self.add_widget( TabbedPanelHeader(text='Users', content=self.users_layout)) self.add_widget( TabbedPanelHeader(text='Users VS\nEstimators', content=self.users_vs_estimators_layout)) # self.add_widget(TabbedPanelHeader(text='Activity logs', content=self.activity_logs_layout)) self.add_widget( TabbedPanelHeader(text='Profile', content=self.admin_profile_layout))
def add_tab(self): """Adds a new tab to this TabbedPanel. The new tab will contain a TransformPanel and attach this panel as a listener to its transform property. It will be added after the current tab, and the panel will switch to that tab. This implementation has a hard-limit of 6 tabs; the implementation will show an error dialog if this method tries to exceed that number of tabs.""" if (len(self.tab_list) > 6): dialog = ErrorDialog('No more than 6 transforms allowed') dialog.size_hint = (0.7,0.6) dialog.pos_hint = {'x':0.15,'y':0.2} return pos = self.tab_list.index(self.current_tab) content = TransformPanel() content.bind(transform=self.recalculate) panel = TabbedPanelHeader(text='',content=content) panel.background_color = (0.8,0.8,0.5) panel.background_down = 'a5lib/uix/tab_down.png' panel.background_normal = 'a5lib/uix/tab_up.png' self.add_widget(panel) for x in range(pos): self.shuffle_tab(x,True) tab1 = self.tab_list[pos+1] tab2 = self.tab_list[pos] tab1.state = 'normal' tab2.state = 'down' self.switch_to(self.tab_list[pos])
def __init__(self, **kwargs): super(GraphManager, self).__init__(**kwargs) self.n_points_per_update = 10 self.tabs_dict = { 'Capacitance': CapacitancePlot(n_plots=4, color=[(0.5, 0.1, 0.1, 1), (0.1, 0.5, 0.1, 1), (0.1, 0.1, 0.5, 1), (0.5, 0.1, 0.5, 1)], legend=['Ch 1', 'Ch 2', 'Ch 3', 'Ch 4']), 'Resistance': ResistancePlot(), 'Temperature': TemperaturePlot(color=(0.5, 0.1, 0.1, 1), legend='Temperature'), 'Humidity': HumidityPlot(color=(0.5, 0.1, 0.1, 1), legend='Humidity'), 'Current': CurrentPlot() } for tab in self.tabs_dict.keys(): # Create panel th = TabbedPanelHeader(text=tab) th.content = self.tabs_dict[tab] self.add_widget(th) # Bind data sample rate self.bind(data_sample_rate=self.tabs_dict[tab].setter( 'data_sample_rate')) # Bind temperature and humidity sample rate self.bind(temperature_sample_rate=self.tabs_dict[tab].setter( 'temperature_sample_rate')) self.bind(num_samples_per_second=self.tabs_dict[tab].setter( 'num_samples_per_second'))
def build(self) -> 'kivy.uix.tabbedpanel.TabbedPanel': self.tp = TabbedPanel() self.tp.tab_width = 500 #Default tab: Main Controller self.tp.default_tab_text = "Main Controller Page" self.tp.default_tab_content = ControllerView() self.tp.default_tab.background_normal = 'images/strong_blue.png' self.tp.default_tab.background_down = 'images/lime_green.png' #Drone Control self.th_drone_adv_control = TabbedPanelHeader(text='Drone Control') self.th_drone_adv_control.content= DroneView() self.th_drone_adv_control.background_normal = 'images/strong_blue.png' self.th_drone_adv_control.background_down = 'images/lime_green.png' #Drone Control self.th_drone_control = TabbedPanelHeader(text='DIPS and Mapping') self.th_drone_control.content= DroneAdvView() self.th_drone_control.background_normal = 'images/strong_blue.png' self.th_drone_control.background_down = 'images/lime_green.png' #Documentation self.th_doc = TabbedPanelHeader(text='Documentation') self.th_doc.content= DocView() self.th_doc.background_normal = 'images/strong_blue.png' self.th_doc.background_down = 'images/lime_green.png' self.tp.add_widget(self.tp.default_tab) self.tp.add_widget(self.th_drone_adv_control) self.tp.add_widget(self.th_drone_control) self.tp.add_widget(self.th_doc) return self.tp
def add_tab(self): """Adds a new tab to this TabbedPanel. The new tab will contain a TransformPanel and attach this panel as a listener to its transform property. It will be added after the current tab, and the panel will switch to that tab. This implementation has a hard-limit of 6 tabs; the implementation will show an error dialog if this method tries to exceed that number of tabs.""" if (len(self.tab_list) > 6): dialog = ErrorDialog('No more than 6 transforms allowed') dialog.size_hint = (0.7, 0.6) dialog.pos_hint = {'x': 0.15, 'y': 0.2} return pos = self.tab_list.index(self.current_tab) content = TransformPanel() content.bind(transform=self.recalculate) panel = TabbedPanelHeader(text='', content=content) panel.background_color = (0.8, 0.8, 0.5) panel.background_down = 'a5lib/uix/tab_down.png' panel.background_normal = 'a5lib/uix/tab_up.png' self.add_widget(panel) for x in range(pos): self.shuffle_tab(x, True) tab1 = self.tab_list[pos + 1] tab2 = self.tab_list[pos] tab1.state = 'normal' tab2.state = 'down' self.switch_to(self.tab_list[pos])
def __init__(self, retour_selection, titre, parent_scm, dict_eleves_par_groupe, **kwargs): self.titre = titre self.retour_selection = retour_selection self.parent_scm = parent_scm self.dict_eleves = dict_eleves_par_groupe self.dict_panneau_groupe = dict() super(Formation, self).__init__(**kwargs) for nom_groupe in self.dict_eleves.keys(): tb = TabbedPanelItem(text=nom_groupe) panneaugr = PanneauGroupe(self.dict_eleves[nom_groupe], nom_cours=titre) self.dict_panneau_groupe[nom_groupe] = panneaugr tb.add_widget(panneaugr) self.nb.add_widget(tb) fin = TabbedPanelItem(text='Terminer') self.panfin = PanneauFinFormation(self.terminaison, self.recapitulatif) fin.add_widget(self.panfin) fin.bind(on_release=self.panfin.update) self.nb.add_widget(fin) self.panneau_fin = fin retour = TabbedPanelHeader(text='Retour') retour.bind(on_release=self.retour) self.nb.add_widget(retour) self.panneau_retour = retour
def create_game_widgets(self): pos_x = 0.2 tp = Tab(size_hint=(0.8, 0.75), pos_hint={'x': pos_x, 'y': 0.25}) th = TabbedPanelHeader(text='Game State') tp.add_widget(th) layout = FloatLayout() pos_x = 0.1 game = GameHandler.get_game_instance() print(game.__dict__) for index, suit in enumerate(Suit): card_map = game.card_map[index] selected_cards = [] if len(card_map) > 0: min_card = Card.from_str(card_map[0]) max_card = Card.from_str(card_map[1]) selected_cards = list(CardIterator(min_card, max_card)) second = SuitWidget(suit, selected_cards, size_hint=(0.2, 1), pos_hint={ 'x': pos_x, 'y': 0.15 }) pos_x += 0.2 layout.add_widget(second) th.content = layout self.add_widget(tp) self.state_layout = layout game = GameHandler.get_game_instance() self.create_player_widget(game.me) background_color = get_color_from_hex( "#FFFFFF" if game.is_your_turn() else "#808080") disabled_color = get_color_from_hex("#FFFFFF") self.pass_button = pass_button = Button( text="PASS", pos_hint={ 'x': 0.4, 'y': 0.05 }, size_hint=(0.25, 0.05), disabled=not game.is_your_turn(), background_disabled_normal='') pass_button.background_color = background_color pass_button.disabled_color = disabled_color pass_button.bind(on_press=self.pass_move) self.add_widget(pass_button, index=0) self.move_button = move_button = Button( text="Make Move", size_hint=(0.25, 0.05), pos_hint={ 'x': 0.4, 'y': 0.15 }, disabled=not game.is_your_turn(), background_disabled_normal='') move_button.background_color = background_color move_button.disabled_color = disabled_color move_button.bind(on_press=self.on_click) self.add_widget(move_button, index=0)
def create_player_widget(self, player): pos_x = 0 tp = Tab(size_hint=(0.2, 0.75), pos_hint={'x': pos_x, 'y': 0.25}) th = TabbedPanelHeader(text=player.player["name"]) tp.add_widget(th) player_widget = GamePlayerWidget(player=player) player_widget.bind(selected_card=self.on_selected) th.content = player_widget self.add_widget(tp) self.player_widget = player_widget
def build(self): self.config.read(self.get_application_config()) h = Home() th = TabbedPanelHeader(text='Settings') h.add_widget(th) sett = Settings() th.content = sett.create_json_panel('Fractal Entropy', self.config, data=mysettings.json) return h
def build(self): # App is built as a tabbed panel with three tabs: # Navigation, Status, and Media. These allow quick # access to the things you actually want to do in # a car without excessive UI navigation. tp = TabbedPanel() tp.do_default_tab = False tp.tab_pos = 'bottom_mid' tp.tab_width = Window.width / 3 nav = TabbedPanelHeader(text='Nav') status = TabbedPanelHeader(text='Status') media = TabbedPanelHeader(text='Media') tp.add_widget(nav) tp.add_widget(status) tp.add_widget(media) #nav.content = Label(text = 'Nav system goes here') #status.content = Label(text = 'Performance, health, and eco stats go here') #media.content = Label(text = 'Media player goes here') # Each tab's content is implemented in a tab above. nav.content = KVMaps() status.content = Performance() media.content = MusicPlayer() return tp
def build(self): tb_panel= TabbedPanel() tb_panel.background_image ="fundal2.jpg" tb_panel.default_tab_text = "tab-ul default" tb_panel.default_tab_content = Image(source='infoacademy3.gif',pos=(200, 100), size=(200, 200)) th_text_head = TabbedPanelHeader(text='Text tab') th_text_head.content= Label(text='Infoacademy', font_size = 40) th_img_head= TabbedPanelHeader(text='Image tab') th_img_head.content= Image(source='infoacademy4.gif',pos=(400, 100), size=(400, 400)) th_btn_head = TabbedPanelHeader(text='Button tab') layout= GridLayout(cols=1) eticheta=Label(text='tab-ul cu buton', font_size = 40) buton=Button(text='Acesta este un buton',font_size=20) layout.add_widget(eticheta) layout.add_widget(buton) th_btn_head.content= layout th_btn_head.content.padding = 200 tb_panel.add_widget(th_text_head) tb_panel.add_widget(th_img_head) tb_panel.add_widget(th_btn_head) return tb_panel
def build(self): root = TabbedPanel(do_default_tab=False) tab32 = TabbedPanelHeader(text="Binary 32") tab64 = TabbedPanelHeader(text="Binary 64") tab32.content = IEEE754Converter(number_of_bits=32) tab64.content = IEEE754Converter(number_of_bits=64) root.add_widget(tab32) root.add_widget(tab64) return root
def __init__(self, **kwargs): super(StudentMain, self).__init__(**kwargs) self.default_tab_text = 'Welcome!' self.default_tab.content = Label(text='Welcome to CATsys!') for i in range(len(db_curs)): tab = TabbedPanelHeader( text=db_names[i]) #(text='Class %i' % (i + 1)) tab.content = StudentList(i) self.class_tabs.append(tab) self.add_widget(tab)
def generate_GUI(menus): app_gui = TabbedPanel() app_gui.clear_tabs() app_gui.orientation = "vertical" app_gui.do_default_tab = False app_gui.tab_width = 150 for menu_key, sub_menu in menus.items(): main_menu = TabbedPanelHeader(text=menu_key) scroll_pane = ScrollView() scroll_pane.scroll_type = ['bars', 'content'] scroll_pane.bar_pos_y = 'left' scroll_pane.bar_width = 6 scroll_pane.do_scroll_y = True scroll_pane.do_scroll_x = False scroll_pane.scroll_y = 1 menu_grid = GridLayout(cols=1, spacing=2, size_hint_y=None) menu_grid.orientation = "vertical" menu_grid.padding = 10 menu_grid.row_default_height = 1 menu_height = 0 print(">>>" + menu_key) for sub_menu_key, items in sub_menu.items(): menu_grid.add_widget( Label(text=" " + sub_menu_key, size_hint=(None, None), font_size=14, halign="left", valign="middle")) print("\t" + sub_menu_key) for option in items: if "Name" in option: print("\t\t" + option["Name"]) btn = Button(text=option["Name"], size_hint=(0.1, None), background_color=(0.2, 1, 1, 0.8)) btn.bind(on_press=lambda x: webbrowser.open(option["URL"])) else: print("\t\t" + "<EMPTY>") btn = Button(text="<EMPTY>", size_hint=(0.1, None), background_color=(0.2, 1, 1, 0.8)) btn.bind(on_press=lambda x: webbrowser.open(option["URL"])) btn.width = 250 btn.height = 50 menu_grid.add_widget(btn) menu_height += 80 menu_height += 51 menu_grid.height = menu_height scroll_pane.add_widget(menu_grid) main_menu.content = scroll_pane main_menu.orientation = "vertical" # Adding headers to main layout app_gui.add_widget(main_menu) return app_gui
def results_panel_fill(self): # remove previous results from results grid self.results_grid.clear_widgets() self.results_panel = TabbedPanel(do_default_tab=False) # loop through categories in current results for category in self.results.categories.keys(): category_tab = TabbedPanelHeader(text=category) # add grid to a scrollview widget items_scrollview = ScrollView(size_hint=(1, None), size=(Window.width, Window.height * 0.55)) # create grid that is scrollable items_grid = GridLayout(cols=3, size_hint=(1, None), size=(Window.width, Window.height * 0.55)) items_grid.bind(minimum_height=items_grid.setter('height')) new_items_field = TextInput(hint_text="'Seperate multiple items with commas'") add_item_btn = Button(text='Add\nitems', size_hint=(del_col, None), on_press=partial(self.add_new_cat_item_callback, input=new_items_field, category=category)) add_widgets(items_grid, (new_items_field, add_item_btn)) # disable add new item button on search box when add item btn in results box is added # self.add_item_btn.disabled = True # loop through items in category items = self.results.categories[category].items.items() for (item_name, item_obj) in items: # create item label, edit button, and del button delete_btn = ToggleButton(text="X", size_hint=(del_col, None), on_press=partial(self.delete_item_callback, item=item_name, category=category)) edit_btn = Button(text=item_name, size_hint=(item_col, None), on_press=partial(self.edit_item_callback, category=category, item=item_name)) edit_btn.text_size=edit_btn.size # edit_btn.text_size = edit_btn.size add_widgets(items_grid, (edit_btn, delete_btn)) # create a textbox for adding new items' items_scrollview.add_widget(items_grid) category_tab.content = items_scrollview self.results_panel.add_widget(category_tab) # add panel to results grid self.results_grid.add_widget(self.results_panel)
def __init__(self, **kwargs): super(MainWindow, self).__init__(**kwargs) self.default_tab_text = 'Share' self.main_window_share_contents = MainWindowShareContents() self.default_tab_content = self.main_window_share_contents self.main_window_download_contents = MainWindowDownloadContents() self.download_tab = TabbedPanelHeader(text='Download') self.download_tab.content = self.main_window_download_contents self.add_widget(self.download_tab) self.main_window_about_contents = MainWindowAboutContents() self.about_tab = TabbedPanelHeader(text='About') self.about_tab.content = self.main_window_about_contents self.add_widget(self.about_tab)
def __init__(self, **kwargs): super(TrainMain, self).__init__(**kwargs) self.default_tab_text = 'Training' self.default_tab.content = Label( text='Use these tools to help train the model.') for i in range(len(db_curs)): tab = TabbedPanelHeader( text=db_names[i]) #(text='Class %i' % (i + 1)) tab.content = ImageDateList(i, self) self.locations.append(tab) self.add_widget(tab)
def build(self): sekmeli_panel = TabbedPanel() sekmeli_panel.default_tab.text="İlk Sekme" sekmeli_panel.default_tab.content=Label(text="Sekmeli Panel'in İlk sayfası") for i, isim in enumerate(('Dilek', 'Fatih', 'Melike')): sekme=TabbedPanelHeader(text='Sekme %d' % (i+1)) sekme.content=Label(text="Bu sekmenin sahibi: %s" % isim) sekmeli_panel.add_widget(sekme) return sekmeli_panel
def build(self): tb_panel= TabbedPanel(tab_width=Window.size[0]/4) screen_layout = BoxLayout(padding=10, orientation="horizontal", size_hint=(.7, 1)) tb_panel.default_tab_text = 'Login' #Create text tab th_text_head = TabbedPanelHeader(id='one',text='Screen1') th_text_head.content = test1().test() #tb_panel.Screen1_tab_content = self.test() #Create image tab th_img_head= TabbedPanelHeader(text='Screen2') th_img_head.content= Image(source='sample.jpg',pos=(400, 100), size=(400, 400)) #Create button tab th_btn_head = TabbedPanelHeader(text='Screen3') th_btn_head.content= Button(text='This is my button',font_size=20, size_hint_x=0.5, size_hint_y=0.5) th_text2_head = TabbedPanelHeader(text='Screen4') th_text2_head.content= Label(text='This is my text content') tb_panel.add_widget(th_text_head) tb_panel.add_widget(th_img_head) tb_panel.add_widget(th_btn_head) tb_panel.add_widget(th_text2_head) return tb_panel
def __init__(self, db, **kwargs): super(UserTabbedPanel, self).__init__(**kwargs) self.db = db self.do_default_tab = False self.tab_pos = 'top_mid' # Layouts in tabs self.user_estimators_layout = UserEstimatorsLayout(db=self.db) self.user_own_profile_layout = UserOwnProfileLayout(db=self.db) # Adding tabbed panel headers self.add_widget(TabbedPanelHeader(text='Estimators', content=self.user_estimators_layout)) self.add_widget(TabbedPanelHeader(text='Profile', content=self.user_own_profile_layout)) self.bind(user=self.bind_user)
def login_pressed(self, instance): sql.execute("SELECT CLIENT_ID FROM client WHERE CLIENT_ID = %s AND PASSWORD = %s", (self.cid.text, self.password.text)) result = sql.fetchall() if len(result) == 0: popup_layout = GridLayout(rows = 2) popup_layout.add_widget(Label(text='Invalid Username / Password')) close_popup = Button(text = "Close") popup_layout.add_widget(close_popup) invalid_login_popup = Popup(title='Error', content=popup_layout, size_hint=(.3, .3)) close_popup.bind(on_press=invalid_login_popup.dismiss) invalid_login_popup.open() else: th = TabbedPanelHeader(text=self.cid.text) th.content = app_home().run(self.cid.text, header, th) header.add_widget(th)
def load(self, path, filename): donnees = pd.read_table(os.path.join(path, filename[0]), sep='\t', header=0) self.titre = "Resultat" #print(donnees) M, F, P, Echantillon_F = Traitement_1.lecture_fichier( os.path.join(path, filename[0])) #print(os.path.join(path, filename[0])) #self.corps = Traitement_1.traitement_donnees(M, F, Echantillon_F) nv_onglets = TabbedPanelHeader(text=str(donnees["Sample Name"][1])) nv_onglets.content = Label( text="Echantillon: " + donnees["Sample Name"][1] + "\n" + "\n" + Traitement_1.traitement_donnees(M, F, Echantillon_F)) self.ids.les_onglets.add_widget(nv_onglets) self.dismiss_popup()
def add_term_widget(self, cfg): layout = TermBoxLayout() ti = TabbedPanelHeader() ti.text = ' '.join([str(len(self.root_widget.term_panel.tab_list) + 1), 'Terminal']) ti.content = layout ti.size_hint = (1,1) self.root_widget.term_panel.add_widget(ti) session = create_session(cfg, self.create_terminal(cfg)) term_widget = TermTextInput(session) term_widget.size_hint = (1, 1) term_widget.pos_hint = {'center_y':.5, 'center_x':.5} layout.add_widget(term_widget) layout.term_widget = term_widget ti.term_widget = term_widget ti.session = session ti.session.term_widget = term_widget ti.session.terminal.term_widget = term_widget Clock.unschedule(self.root_widget.term_panel._load_default_tab_content) self.switch_to_tab(ti) conn_str = cfg.get_conn_str() if conn_str in self.conn_history: self.conn_history.remove(conn_str) self.conn_history.insert(0, conn_str)
def on_success_categories(req, result): with open('categories.json', 'w') as fp: json.dump(result, fp) fp.close() self.categories_json = result print ('categories loaded.') for i in result['result']: name = i['name'] self.categories_list.append(i) if not getTabHeader(self.my_tabbed_panel_wid.tab_list, name): th = TabbedPanelHeader(text=name) self.my_tabbed_panel_wid.add_widget(th) layout = GridLayout(cols=4, spacing=2, size_hint_y=None) layout.bind(minimum_height=layout.setter('height')) root = ScrollView() root.add_widget(layout) th.content = root print ('add online category ' + name)
def add_panel(self, panel, name, uid): scrollview = ScrollView() scrollview.add_widget(panel) if not self.tabbedpanel.default_tab_content: self.tabbedpanel.default_tab_text = name self.tabbedpanel.default_tab_content = scrollview else: panelitem = TabbedPanelHeader(text=name, content=scrollview) self.tabbedpanel.add_widget(panelitem)
def MAJ(self): if self.MAJeffectuee == True : return listeOnglets = [] for titre, texte in LISTE_TEXTES : #onglet = TabbedPanelItem(text=titre) #doc = RstDocument(text=texte) #onglet.add_widget(doc) onglet = TabbedPanelHeader(text=titre) onglet.font_size = 15 onglet.content = RstDocument(text=texte) self.tab_aide.add_widget(onglet) listeOnglets.append(onglet) self.tab_aide.switch_to(listeOnglets[0]) self.MAJeffectuee = True
def create_tabs(self): pbuilder = self.parent th1 = TabbedPanelHeader(text = 'Particle') th2 = TabbedPanelHeader(text = 'Behavior') th3 = TabbedPanelHeader(text = 'Color') th1.content = ParticlePanel(pbuilder) th2.content = BehaviorPanel(pbuilder) th3.content = ColorPanel(pbuilder) th1.font_size = self.size[0] * .036 th2.font_size = self.size[0] * .036 th3.font_size = self.size[0] * .036 self.tabs_loaded = True self.particle_tabs.add_widget(th1) self.particle_tabs.add_widget(th2) self.particle_tabs.add_widget(th3)
def build(self): tabbedpanel = TabbedPanel(do_default_tab = False) tabbedpanel.bind(current_tab = self.on_current_tab) self.curtab = None self.filechooser = FileChooser(path = os.path.abspath('.'), on_submit = self.on_file_submit) self.filechooserheader = TabbedPanelHeader(text = 'Select file', content = self.filechooser) tabbedpanel.add_widget(self.filechooserheader) self.qrwidget = QRCode() self.qrwidget.borderwidth = self.config.getint('settings', 'borderwidth') self.on_config_change(self.config, 'settings', 'error', self.config.get('settings', 'error')) self.qrwidget.imagery = self.config.get('settings', 'imagery') self.qrwidgetheader = TabbedPanelHeader(text = 'Sending', content = self.qrwidget) tabbedpanel.add_widget(self.qrwidgetheader) self.readiter = None self.writefile = None self.cameraheaders = ( TabbedPanelHeader(text = 'Camera 1'),#, content = Camera(index = 0, play = False)), TabbedPanelHeader(text = 'Camera 2')#, content = Camera(index = 1, play = False)) ) for cameraheader in self.cameraheaders: tabbedpanel.add_widget(cameraheader) #self.camera = Camera(index=1) #self.camera._camera.bind(on_texture = self.on_camtexture) #self.camera._camera.widget = self.camera #pagelayout.add_widget(self.camera) self.settingsheader = TabbedPanelHeader(text = 'Settings', content = self._app_settings) tabbedpanel.add_widget(self.settingsheader) self.tabbedpanel = tabbedpanel self.settings_cls = SettingsWithNoMenu # this seems clearer than doing the hack to make dynamic creation work in tabbedpanel self._app_settings = self.create_settings() return tabbedpanel
def create_tabs(self): pbuilder = self.parent th1 = TabbedPanelHeader(text = 'Particle') th2 = TabbedPanelHeader(text = 'Behavior') th3 = TabbedPanelHeader(text = 'Color') th1.content = ParticlePanel(pbuilder) th2.content = BehaviorPanel(pbuilder) th3.content = ColorPanel(pbuilder) th1.font_size = self.size[0] * .036 th2.font_size = self.size[0] * .036 th3.font_size = self.size[0] * .036 self.particle_tabs.default_tab = TabbedPanelHeader(text="default tab replaced"+str(randint(1,10000))) self.tabs_loaded = True self.particle_tabs.add_widget(th1) self.particle_tabs.add_widget(th2) self.particle_tabs.add_widget(th3)
def on_error_categories(req, result): self.update_icon(False) print 'could not load categories' try: with open('categories.json') as data_file: result = json.load(data_file) self.categories_json = result for i in result['result']: name = i['name'] self.categories_list.append(i) if not getTabHeader(self.my_tabbed_panel_wid.tab_list, name): th = TabbedPanelHeader(text=name) self.my_tabbed_panel_wid.add_widget(th) layout = GridLayout(cols=4, spacing=2, size_hint_y=None) layout.bind(minimum_height=layout.setter('height')) root = ScrollView() root.add_widget(layout) th.content = root print ('add local category ' + name) except: traceback.print_exc(file=sys.stdout)
def __init__(self, **kwargs): super(TabbedPanelApp, self).__init__(**kwargs) self.cols =1 tb_panel= TabbedPanel() th_text_head = TabbedPanelHeader(text='Text tab') th_text_head.content= Label(text='Un text') th_img_head= TabbedPanelHeader(text='Image tab') th_img_head.content= Image(source='nature4.jpg',pos=(400, 100), size=(400, 400)) th_btn_head = TabbedPanelHeader(text='Button tab') th_btn_head.content= Button(text='Acesta este un buton',font_size=20, size_hint=(0.8, 0.8)) tb_panel.add_widget(th_text_head) tb_panel.add_widget(th_img_head) tb_panel.add_widget(th_btn_head) self.add_widget(tb_panel)
def build(self): tb_panel= TabbedPanel() #Create text tab th_text_head = TabbedPanelHeader(text='Text tab') th_text_head.content= Label(text='This is my text content') #Create image tab th_img_head= TabbedPanelHeader(text='Image tab') th_img_head.content= Image(source='sample.jpg',pos=(400, 100), size=(400, 400)) #Create button tab th_btn_head = TabbedPanelHeader(text='Button tab') th_btn_head.content= Button(text='This is my button',font_size=20) tb_panel.add_widget(th_text_head) tb_panel.add_widget(th_img_head) tb_panel.add_widget(th_btn_head) return tb_panel
def build(self): btn_animate = Button( text='animate', on_press=self.animate, size_hint=(0.4, 0.2)) set_T = Slider(min=10, max=20, value=12) set_T.bind(value=self.set_T) root = TabbedPanel(do_default_tab=False) # cracking panel cracking_panel = TabbedPanelHeader(text='Cracking') cracking_panel.content = BoxLayout(orientation='vertical') cracking_panel.content.add_widget(self.cracking_wid) cracking_panel.content.add_widget(btn_animate) # cb panel cb_panel = TabbedPanelHeader(text='CB') cb_panel.content = BoxLayout() cb_panel.content.add_widget(self.cb_wid) cb_panel.content.add_widget(set_T) # matrix panel #matrix_panel = TabbedPanelHeader(text='Matrix') #matrix_panel = GridLayout() # curve panel btn_plot = Button( text='Plot', on_press=self.plot_eps_sig, size_hint=(0.4, 0.2)) curve_panel = TabbedPanelHeader(text='Curve') curve_panel.content = BoxLayout(orientation='vertical') curve_panel.content.add_widget(self.curve_wid) curve_panel.content.add_widget(btn_plot) # curve_panel.content.add_widget(wid1) root.add_widget(cb_panel) # root.add_widget(matrix_panel) root.add_widget(cracking_panel) root.add_widget(curve_panel) return root
def build(self): #*******ROOTWIDGET******* layout = GridLayout(rows=2) #*******SUB-WIDGETS******* layoutTop = GridLayout(cols=3,rows=1)#SUB-WIDGET-1 layoutTop.size_hint = (1, 0.1) layoutMid = GridLayout(cols=1, size_hint_x=1)#SUB-WIDGET-2 #*******CONTENT-OF-SUB-WIDGET-1******* backbtn = Button() title = Label(text = 'Pro-Forma App', font_size = '20sp', pos = (0,300), size_hint_y = None,size_hint_x=None, width=200, halign ='right', valign='middle') title.size_hint = (None, 0.1) dropbtn = Button() #*******CONTENT-OF-SUB-WIDGET-2******* tp_panel = TabbedPanel() tp_panel.default_tab_text = "Login Tab" #*******TAB1******* th_tab1 = TabbedPanelHeader(text = 'Pro-Forma') #*******MAIN-LAYOUT-FOR-TAB1******* mainlayout = GridLayout(cols=1, spacing=10) #*******LAYOUT-FOR-PROPERTY-INFORMATION******* layouttab1 = GridLayout(cols=2,rows=6, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40) #*******LAYOUT-FOR-UNIT-MIX******* layoutmix = GridLayout(cols=4, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40) #*******LAYOUT-FOR-EXPENSES******* layoutexpense = GridLayout(cols=2) #*******LAYOUT-FOR-ACCOUNTS******* #*******CONTENT1******* mainlayout.add_widget(Label(text='Property Information',size_hint_y=None, height=50)) #*******CONTENT2******* layouttab1.add_widget(Label(text= 'Property Name', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Property Address', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Town/City', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Asking Price', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Total Units', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Square Footage', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) mainlayout.add_widget(layouttab1) #*******CONTENT3******* mainlayout.add_widget(Label(text='Unit Mix',size_hint_x=None, width=200, size_hint_y=None, height=50)) #*******CONTENT4******* layoutmix.add_widget(Label(text='# of Units')) layoutmix.add_widget(Label(text='Unit Type')) layoutmix.add_widget(Label(text='SquareFeet')) layoutmix.add_widget(Label(text='Monthly Rent')) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) mainlayout.add_widget(layoutmix) #*******CONTENT5******* mainlayout.add_widget(Label(text='Expenses',size_hint_x=None, width=200, size_hint_y=None, height=50)) #*******CONTENT6******* layoutexpense.add_widget(Label(text='Accounting')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Advertising')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Bank Charges')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Electricity')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Gas')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Security')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='All insurance')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Permits and fees')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Maintenance')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Trash Pick-up')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='All other')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) mainlayout.add_widget(layoutexpense) #*******CONTENT7******* mainlayout.add_widget(Label(text='Accounts')) #*******CONTENT7******* #*******SCOLLABILITY******* #*******CALLING-MAINLAYOUT-IN-TAB1******* th_tab1.content = mainlayout #___*******TAB2*******___# th_tab2 = TabbedPanelHeader(text = 'Info. Tab') #___*******TAB3*******___# th_tab3 = TabbedPanelHeader(text = 'Due Deligence') #___*******TAB4*******___# th_tab4 = TabbedPanelHeader(text = 'Saved Reports') #*******CALLING-TABS-TO-tp_panel******* tp_panel.add_widget(th_tab1) tp_panel.add_widget(th_tab2) tp_panel.add_widget(th_tab3) tp_panel.add_widget(th_tab4) #*******ADDING-CONTENTS-OF-SUB-WIDGETS******* layoutTop.add_widget(backbtn) layoutTop.add_widget(title) layoutTop.add_widget(dropbtn) layoutMid.add_widget(tp_panel) #*******ADDING-CONTENTS-OF-ROOT-WIDGET******* layout.add_widget(layoutTop) layout.add_widget(layoutMid) #*******CALLING-THE-ROOT-WIDGET******* return layout
def __init__(self): super(MyWidget, self).__init__() self.cos_table = CosTable([(0,0), (100,1), (1000,.25), (8191,0)]) self.osc_out = Osc(table=self.cos_table, freq=220) # For each element of the GUI, make sure to # 1. Create a unique reference attached to this object for # future manipulation. e.g. self.main_box = main_box after you've # created a BoxLayout called main_box # Interesting things about Kivy UI programming: # 1. y starts counting from bottom left # 2. set size_hint to '[None, None]' for all new widgets if defining # the size and manually # MAIN LAYOUT main_layout = FloatLayout(size=[800,600], orientation='horizontal') self.main_layout = main_layout self.add_widget(main_layout) # TABS WITH GAME CONTROL # Tabbed panel for music, settings, network # Y-position of tabbed panel depends on tab height! tabs = TabbedPanel(tab_width=50, size=[160, 480], pos=[0, 120], size_hint=(None, None)) self.tabs = tabs main_layout.add_widget(tabs) # Music tab music_button = Button(text="Music things") tabs.default_tab_content = music_button tabs.default_tab.text = "Music" # Network tab network_tab = TabbedPanelHeader(text="Net") tabs.add_widget(network_tab) network_layout = BoxLayout(orientation="vertical", padding=10) server_button = Button(text="Start server") ip_label = Label(text="Your IP is\n123.234.456.789"); client_label = Label(text="Connect to server: "); server_ip_input = TextInput(text="Enter server IP") network_layout.add_widget(server_button) network_layout.add_widget(ip_label) network_layout.add_widget(client_label) network_layout.add_widget(server_ip_input) network_tab.content = network_layout # Global tab global_tab = TabbedPanelHeader(text="Global") tabs.add_widget(global_tab) global_button = Button(text="Global things") global_tab.content = global_button # END TABS # RIGHT-SIDE LAYOUT: NOTES GRID AND PLAYBACK UI music_layout = FloatLayout(size=[640, 600], pos=[161, 0], size_hint=[None, None]) self.music_layout = music_layout main_layout.add_widget(music_layout) # NOTES GRID # Right now Kivy isn't really paying attention to button size and # padding. Later on, we'll fix this with a FloatLayout note_rows = note_cols = 8 padding_between = 5 note_grid = GridLayout(size=[640, 480], pos=[161, 121], size_hint=[None, None], rows=note_rows, cols=note_cols, padding=padding_between) music_layout.add_widget(note_grid) edge_padding = 30 grid_start_x = note_grid.x + edge_padding grid_end_x = note_grid.right - edge_padding grid_start_y = note_grid.y + edge_padding grid_end_y = note_grid.top - edge_padding notes_matrix = [] note_width = grid_end_x - grid_start_x - padding_between * \ (note_rows - 1) note_height = grid_end_y - grid_start_y - padding_between * \ (note_rows - 1) # Adding a rectangle to test playback indicator self.playback_indicator = Rectangle(pos=[161,121], size=[75, 480]) self.playback_canvas = Canvas() playback_widget = Widget() self.playback_canvas.add(self.playback_indicator) self.playback_canvas.opacity = .5 playback_widget.canvas = self.playback_canvas music_layout.add_widget(playback_widget) for row in range(0, note_rows): for col in range(0, note_cols): new_id = str(row) + "," + str(col) new_button = ToggleButton(text=new_id, id=new_id, width=note_width, height=note_height) active_color = (1, 0, 0, 1) new_button.background_color = active_color new_button.bind(on_press=self.play_note) note_grid.add_widget(new_button) # PLAYBACK BUTTONS playback = Button(text="For playback", size=[640, 120], size_hint=[None, None], pos=[161, 0]) music_layout.add_widget(playback)
def build(self): #*******ROOTWIDGET******* layout = GridLayout(rows=2) #*******SUB-WIDGETS******* layoutTop = GridLayout(cols=3,rows=1)#SUB-WIDGET-1 layoutTop.size_hint = (1, 0.1) layoutMid = FloatLayout()#SUB-WIDGET-2 layoutMid.size_hint = (1, 1) #*******CONTENT-OF-SUB-WIDGET-1******* menubtn = Button(text='Menu') menubtn.size_hint = (0.1, 0.1) head = Label(text='PRO-FORMA',size_hint_y = None,size_hint_x=None, width=200) head.size_hint = (0.8, 0.1) backbtn = Button(text='Drop') backbtn.size_hint = (0.1, 0.1) #dropbtn = Button() #*******CONTENT-OF-SUB-WIDGET-2******* tp_panel = TabbedPanel() tp_panel.default_tab_text = "Global News" layoutnews = GridLayout(rows=2) upperlayout = GridLayout(cols=3, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40, size_hint_y=None, height = 50, size_hint_x=1) lowerlayout = GridLayout(row=1) upperlayout.add_widget(Button(text='S', size_hint=(0.1, None))) upperlayout.add_widget(TextInput(text='search', size_hint=(0.8, None), focus=True, multiline=False)) upperlayout.add_widget(Button(text='settings', size_hint=(0.1, None))) lowerlayout.add_widget(Label()) layoutnews.add_widget(upperlayout) layoutnews.add_widget(lowerlayout) tp_panel.default_tab_content = layoutnews #*******TAB1******* th_tab1 = TabbedPanelHeader(text = 'Pro-Forma') #*******SCROLLABILITY-WIDGET******* scroll = ScrollView(size_hint=(1, None), size=(800, 1000)) mainlayout = GridLayout(cols = 1, spacing = 10, size_hint_y=None, size_hint_x=1) mainlayout.bind(minimum_height=mainlayout.setter('height')) #*******LAYOUT-FOR-PROPERTY-INFORMATION******* layouttab1 = GridLayout(cols=2,rows=6, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40, size_hint_y=None, height = 250, size_hint_x=1) #*******LAYOUT-FOR-UNIT-MIX******* layoutmix = GridLayout(cols=4, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40,size_hint_y=None, height = 80) #*******LAYOUT-FOR-EXPENSES******* layoutexpense = GridLayout(cols=2, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40, size_hint_y=None, height = 960) #*******LAYOUT-FOR-ACCOUNTS******* layoutacc = GridLayout(cols=2, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40,size_hint_y=None, height = 240) #*******CONTENT1***** mainlayout.add_widget(Label(text='Property Information',size_hint=(None, 1))) #*******CONTENT2******* layouttab1.add_widget(Label(text= 'Property Name', font_size=15, size_hint=(0.4, None))) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True)) layouttab1.add_widget(Label(text= 'Property Address', font_size=15, size_hint=(0.4, None))) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True)) layouttab1.add_widget(Label(text= 'Town/City', font_size=15, size_hint=(0.4, None))) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True)) layouttab1.add_widget(Label(text= 'Asking Price', font_size=15, size_hint=(0.4, None))) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True)) layouttab1.add_widget(Label(text= 'Total Units', font_size=15, size_hint=(0.4, None))) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True)) layouttab1.add_widget(Label(text= 'Square Footage', font_size=15, size_hint=(0.4, None))) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True)) mainlayout.add_widget(layouttab1) #*******CONTENT3******* mainlayout.add_widget(Label(text='Unit Mix',size_hint_x=None, width=200, size_hint_y=None, height=50)) #*******CONTENT4******* layoutmix.add_widget(Label(text='# of Units')) layoutmix.add_widget(Label(text='Unit Type')) layoutmix.add_widget(Label(text='SquareFeet')) layoutmix.add_widget(Label(text='Monthly Rent')) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) mainlayout.add_widget(layoutmix) #*******CONTENT7******* mainlayout.add_widget(Label(text='Accounts',size_hint_x=None, width=200, size_hint_y=None, height=50)) #*******CONTENT7******* layoutacc.add_widget(Label(text='Purchase Price')) layoutacc.add_widget(TextInput(text='Input')) layoutacc.add_widget(Label(text='Deposit')) layoutacc.add_widget(TextInput(text='Input')) layoutacc.add_widget(Label(text='Loan Amount')) layoutacc.add_widget(TextInput(text='Input')) layoutacc.add_widget(Label(text='Annual Interest')) layoutacc.add_widget(TextInput(text='Input')) layoutacc.add_widget(Label(text='Period')) layoutacc.add_widget(TextInput(text='Input')) layoutacc.add_widget(Label(text='Total Cash Outlay')) layoutacc.add_widget(TextInput(text='Input')) mainlayout.add_widget(layoutacc) #*******CONTENT5******* mainlayout.add_widget(Label(text='Expenses',size_hint_x=None, width=200, size_hint_y=None, height=50)) #*******CONTENT6******* layoutexpense.add_widget(Label(text='Accounting')) layoutexpense.add_widget(TextInput(text='Input', font_size=15,)) layoutexpense.add_widget(Label(text='Advertising')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Bank Charges')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Electricity')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Gas')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Security')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='All insurance')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Permits and fees')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Maintenance')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Trash Pick-up')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='All other')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) mainlayout.add_widget(layoutexpense) #*******CALLING-MAINLAYOUT-IN-TAB1******* scroll.add_widget(mainlayout) th_tab1.content = scroll tp_panel.add_widget(th_tab1) #___*******TAB3*******___# th_tab3 = TabbedPanelHeader(text = 'Saved Reports') tp_panel.add_widget(th_tab3) #*******ADDING-CONTENTS-OF-SUB-WIDGETS******* layoutTop.add_widget(menubtn) layoutTop.add_widget(head) layoutTop.add_widget(backbtn) layoutMid.add_widget(tp_panel) #*******ADDING-CONTENTS-OF-ROOT-WIDGET******* layout.add_widget(layoutTop) layout.add_widget(layoutMid) #*******CALLING-THE-ROOT-WIDGET******* return layout
def tab_info(self): self.pbuilder = self.parent.parent self.description_tab = TabbedPanel() particle_info = TabbedPanelHeader(text = 'Particle') behavior_info = TabbedPanelHeader(text = 'Behavior') color_info = TabbedPanelHeader(text = 'Color') particle_info.font_size = self.size[0]*.28 behavior_info.font_size = self.size[0]*.28 color_info.font_size = self.size[0]*.28 particle_info.content = RstDocument(source="param_descriptions/ParticleTab.rst") behavior_info.content = RstDocument(source="param_descriptions/BehaviorTab.rst") color_info.content = RstDocument(source="param_descriptions/ColorTab.rst") particle_info.scroll_distance = 2 particle_info.scroll_timeout = 500 behavior_info.scroll_distance = 2 behavior_info.scroll_timeout = 500 color_info.scroll_distance = 2 color_info.scroll_timeout = 500 self.description_tab.default_tab = particle_info self.description_tab.tab_width = self.size[0]*4.36 self.description_tab.tab_height = self.size[1]*.7 self.description_tab.add_widget(particle_info) self.description_tab.add_widget(behavior_info) self.description_tab.add_widget(color_info) self.description_popup = Popup(title="Variable Descriptions", content = self.description_tab, size_hint = (.8,.8), on_open=self._popup_opened, on_dismiss=self._popup_dismissed) self.description_popup.open()
def __init__(self, app, music_player): """Create main GUI Arguments: parent -- parent application to this widget music_player -- audio generator for full application network -- network client and server handler """ # Initialize Tkinter, and instruct it hide root window self.tk_root = Tkinter.Tk() self.tk_root.withdraw() # Perform widget initializations super(GUI, self).__init__() # OVERALL STRUCTURE WINDOW_WIDTH = 800 WINDOW_HEIGHT = 600 OUTER_PADDING = 20 # Set default parameters to be used in accurately loading an # initial state to the GUI self.app = app self.music_player = music_player self.track_id = MusicPlayer.WAVETABLE_A self.popup_count = 0 # Turn off multi-touch in this GUI Config.set('input', 'mouse', 'mouse,disable_multitouch') # Determine image directory IMAGE_DIR = system.get_images_dir() # For dynamic GUI coloring self.TRACK_COLORS = [[.7, .4, .9, 1.0], [.6, .9, .4, 1.0], [.8, .5, .3, 1.0]] self.colorables = [] # Create widget for the main layout. This will be added separately # from each of our popup windows self.main_layout = NSWidget() self.add_widget(self.main_layout) # BUTTON GRID NOTE_BUTTON_WIDTH = 48 NOTE_BUTTON_HEIGHT = 48 NOTE_BUTTON_PADDING = 7 ROW_LABEL_WIDTH = 54 ROW_LABEL_HEIGHT = NOTE_BUTTON_HEIGHT ROW_LABEL_FONT_SIZE = 10 NOTE_BUTTON_ROWS = MusicPlayer.NUM_ROWS NOTE_BUTTON_COLS = MusicPlayer.NUM_COLS GRID_WIDTH = NOTE_BUTTON_PADDING + ROW_LABEL_WIDTH + \ NOTE_BUTTON_PADDING + (NOTE_BUTTON_COLS * (NOTE_BUTTON_WIDTH + NOTE_BUTTON_PADDING)) GRID_HEIGHT = NOTE_BUTTON_PADDING + (NOTE_BUTTON_ROWS * (NOTE_BUTTON_HEIGHT + NOTE_BUTTON_PADDING)) GRID_X = OUTER_PADDING GRID_Y = WINDOW_HEIGHT - OUTER_PADDING - GRID_HEIGHT PLAYHEAD_WIDTH = NOTE_BUTTON_WIDTH + 4 PLAYHEAD_HEIGHT = GRID_HEIGHT PLAYHEAD_OPACITY = .5 PLAYHEAD_COLOR = Color(1.0, 1.0, 1.0) # Playhead playhead_widget = Widget() playhead_canvas = Canvas() playhead_canvas.add(PLAYHEAD_COLOR) playhead = Rectangle(size=[PLAYHEAD_WIDTH, PLAYHEAD_HEIGHT]) playhead_canvas.add(playhead) playhead_canvas.opacity = PLAYHEAD_OPACITY playhead_widget.canvas = playhead_canvas self.main_layout.add_widget(playhead_widget) self.playhead = playhead # For each row, create labels and notes self.row_labels = [] self.note_buttons = [] row_top = GRID_Y + GRID_HEIGHT - NOTE_BUTTON_PADDING for row in range(0, NOTE_BUTTON_ROWS): col_x = GRID_X + NOTE_BUTTON_PADDING # Make label for row row_label = Label(text=str(row), width=ROW_LABEL_WIDTH, height=ROW_LABEL_HEIGHT, text_size=[ROW_LABEL_WIDTH, ROW_LABEL_HEIGHT], font_size=ROW_LABEL_FONT_SIZE, halign='center', valign='middle') row_label.x = col_x row_label.top = row_top self.main_layout.add_widget(row_label) self.row_labels.append(row_label) col_x = col_x + ROW_LABEL_WIDTH + NOTE_BUTTON_PADDING # Create all buttons for row row_notes = [] for col in range(0, NOTE_BUTTON_COLS): col_button = NSToggleButton(width=NOTE_BUTTON_WIDTH, height=NOTE_BUTTON_HEIGHT) col_button.id = 'row' + str(row) + ',col' + str(col) col_button.x = col_x col_button.top = row_top col_button.bind(on_press=self.trigger_note) row_notes.append(col_button) self.main_layout.add_widget(col_button) self.colorables.append(col_button) col_x = col_x + NOTE_BUTTON_WIDTH + NOTE_BUTTON_PADDING self.note_buttons.append(row_notes) row_top = row_top - NOTE_BUTTON_PADDING - NOTE_BUTTON_HEIGHT # Set playhead start position leftmost_note = self.note_buttons[0][0] playhead_x = leftmost_note.center_x - (PLAYHEAD_WIDTH / 2) playhead_y = GRID_Y self.playhead.pos = [playhead_x, playhead_y] # PLAYBACK MENU PLAYBACK_X = OUTER_PADDING PLAYBACK_Y = OUTER_PADDING PLAYBACK_WIDTH = GRID_WIDTH PLAYBACK_HEIGHT = WINDOW_HEIGHT - OUTER_PADDING - GRID_HEIGHT - \ OUTER_PADDING - OUTER_PADDING PLAYBACK_CENTER_Y = PLAYBACK_Y + (PLAYBACK_HEIGHT / 2) PLAYBACK_TOP = PLAYBACK_Y + PLAYBACK_HEIGHT PLAY_BUTTON_WIDTH = 48 PLAY_BUTTON_HEIGHT = 48 PLAYALL_BUTTON_WIDTH = 60 PLAYALL_BUTTON_HEIGHT = PLAY_BUTTON_HEIGHT / 2 PLAYALL_BUTTON_FONT_SIZE = 8 PLAYALL_BUTTON_TEXT_SIZE = [PLAYALL_BUTTON_WIDTH, PLAYALL_BUTTON_HEIGHT] PAGE_BUTTON_WIDTH = 20 PAGE_BUTTON_HEIGHT = 30 NUM_PAGE_BUTTONS = MusicPlayer.NUM_PAGES PAGE_LABEL_WIDTH = (PAGE_BUTTON_WIDTH * NUM_PAGE_BUTTONS) PAGE_LABEL_HEIGHT = 20 PAGE_LABEL_FONT_SIZE = 10 PAGE_LABEL_OFFSET = 5 TRACK_BUTTON_WIDTH = 48 TRACK_BUTTON_HEIGHT = 48 NUM_TRACK_BUTTONS = MusicPlayer.NUM_TRACKS NUM_PLAYBACK_ELEMENTS = 4 TRACK_LABEL_WIDTH = TRACK_BUTTON_WIDTH * NUM_TRACK_BUTTONS TRACK_LABEL_HEIGHT = PAGE_LABEL_HEIGHT TRACK_LABEL_FONT_SIZE = PAGE_LABEL_FONT_SIZE TRACK_LABEL_TEXT_SIZE = [TRACK_LABEL_WIDTH, TRACK_LABEL_HEIGHT] TRACK_LABEL_OFFSET = PAGE_LABEL_OFFSET PLAYBACK_PADDING = (PLAYBACK_WIDTH - (PAGE_BUTTON_WIDTH * NUM_PAGE_BUTTONS) - (PLAY_BUTTON_WIDTH) - (TRACK_BUTTON_WIDTH * NUM_TRACK_BUTTONS) - PLAYALL_BUTTON_WIDTH) / (NUM_PLAYBACK_ELEMENTS + 1) # Play/pause button PLAY_BUTTON_X = PLAYBACK_X + PLAYBACK_PADDING # TODO: add a border for this button play_button = ToggleButton(width=PLAY_BUTTON_WIDTH, height=PLAY_BUTTON_HEIGHT) play_button.bind(on_press=self.play_pause) play_button.background_normal = \ os.path.join(IMAGE_DIR, "media-playback-start-4.png") play_button.background_down = \ os.path.join(IMAGE_DIR, "media-playback-pause-4.png") play_button.x = PLAY_BUTTON_X play_button.center_y = PLAYBACK_CENTER_Y self.play_button = play_button self.main_layout.add_widget(play_button) self.colorables.append(play_button) # Buttons to play one page or all one_page_button = NSToggleButton(width=PLAYALL_BUTTON_WIDTH, height=PLAYALL_BUTTON_HEIGHT, text='One page', text_size=PLAYALL_BUTTON_TEXT_SIZE, font_size=PLAYALL_BUTTON_FONT_SIZE, halign='center', valign='middle') one_page_button.bind(on_press=self.play_one_page) one_page_button.x = play_button.right + PLAYBACK_PADDING one_page_button.top = PLAYBACK_CENTER_Y + PLAYALL_BUTTON_HEIGHT self.one_page_button = one_page_button self.main_layout.add_widget(one_page_button) self.colorables.append(one_page_button) all_pages_button = NSToggleButton(width=PLAYALL_BUTTON_WIDTH, height=PLAYALL_BUTTON_HEIGHT, text='All pages', text_size=PLAYALL_BUTTON_TEXT_SIZE, font_size=PLAYALL_BUTTON_FONT_SIZE, halign='center', valign='middle') all_pages_button.bind(on_press=self.play_all_pages) all_pages_button.x = one_page_button.x all_pages_button.top = PLAYBACK_CENTER_Y self.all_pages_button = all_pages_button self.main_layout.add_widget(all_pages_button) self.colorables.append(all_pages_button) if music_player.play_all == False: one_page_button.state = 'down' all_pages_button.state = 'normal' elif music_player.play_all == True: one_page_button.state = 'normal' all_pages_button.state = 'down' # Page selection buttons self.page_buttons = [] page_buttons = [] page_label = Label(text='Page Select', text_size=[PAGE_LABEL_WIDTH, PAGE_LABEL_HEIGHT], font_size=PAGE_LABEL_FONT_SIZE, width=PAGE_LABEL_WIDTH, height=PAGE_LABEL_HEIGHT, halign='center', valign='middle') page_button_x = all_pages_button.right + PLAYBACK_PADDING page_label.x = page_button_x page_label.top = PLAYBACK_CENTER_Y - (PAGE_BUTTON_HEIGHT / 2) - \ PAGE_LABEL_OFFSET self.main_layout.add_widget(page_label) for page_index in range(0, NUM_PAGE_BUTTONS): page_id = 'page' + str(page_index) page_button = NSToggleButton(width=PAGE_BUTTON_WIDTH, height=PAGE_BUTTON_HEIGHT, id=page_id) page_button.bind(on_press=self.select_page) page_button.x = page_button_x page_button.center_y = PLAYBACK_CENTER_Y page_buttons.append(page_button) self.main_layout.add_widget(page_button) self.colorables.append(page_button) page_button_x += PAGE_BUTTON_WIDTH self.page_buttons = page_buttons # Select the current music player's page with the GUI page_buttons[music_player.page_index].state = 'down' # Track selection buttons TRACK_BUTTON_FONT_SIZE = 10 TRACK_BUTTON_TEXT_SIZE = [TRACK_BUTTON_WIDTH, TRACK_BUTTON_HEIGHT] track_text = ["Bass", "Lead", "Drum"] track_buttons = [] self.track_buttons = [] track_button_x = page_buttons[len(page_buttons) - 1].right + \ PLAYBACK_PADDING for track_index in range(0, NUM_TRACK_BUTTONS): track_id = 'track' + str(track_index) track_button = NSToggleButton(text=track_text[track_index], width=TRACK_BUTTON_WIDTH, height=TRACK_BUTTON_HEIGHT, id=track_id, text_size=TRACK_BUTTON_TEXT_SIZE, font_size=TRACK_BUTTON_FONT_SIZE, halign='center', valign='middle') track_button.bind(on_press=self.select_track) track_button.x = track_button_x track_button.center_y = PLAYBACK_CENTER_Y track_buttons.append(track_button) self.main_layout.add_widget(track_button) track_button_x += TRACK_BUTTON_WIDTH self.track_buttons = track_buttons # Select the current track in the GUI track_buttons[self.track_id].state = 'down' leftmost_track_button = self.track_buttons[0] track_label = Label(text='Instrument Select', text_size=TRACK_LABEL_TEXT_SIZE, font_size=TRACK_LABEL_FONT_SIZE, width=TRACK_LABEL_WIDTH, height=TRACK_LABEL_HEIGHT, halign='center', valign='middle') track_label.x = leftmost_track_button.x track_label.top = leftmost_track_button.y - TRACK_LABEL_OFFSET # self.main_layout.add_widget(track_label) # SETTINGS TABS TABS_X = OUTER_PADDING + GRID_WIDTH + OUTER_PADDING TABS_Y = GRID_Y TABS_WIDTH = WINDOW_WIDTH - OUTER_PADDING - GRID_WIDTH - \ OUTER_PADDING - OUTER_PADDING TABS_HEIGHT = GRID_HEIGHT # Element is button, label, etc. Section is vertical group of elements TAB_SECTION_PADDING = 20 TAB_ELEMENT_PADDING = 10 # Note: it's a good idea to make these tabs the size of our icons, # which is 48x48 TAB_HEADER_WIDTH = 48 TAB_HEADER_HEIGHT = TAB_HEADER_WIDTH TAB_HEADER_FONT_SIZE = 20 SECTION_LABEL_FONT_SIZE = 16 SECTION_LABEL_WIDTH = TABS_WIDTH - TAB_SECTION_PADDING * 2 SECTION_LABEL_HEIGHT = 30 SECTION_LABEL_TEXT_SIZE = [SECTION_LABEL_WIDTH, SECTION_LABEL_HEIGHT] ELEMENT_LABEL_FONT_SIZE = 10 ELEMENT_LABEL_WIDTH = TABS_WIDTH - TAB_ELEMENT_PADDING * 2 ELEMENT_LABEL_HEIGHT = 20 ELEMENT_LABEL_TEXT_SIZE = [ELEMENT_LABEL_WIDTH, ELEMENT_LABEL_HEIGHT] TAB_CONTENT_HEIGHT = TABS_HEIGHT - TAB_HEADER_HEIGHT TAB_CONTENT_TOP = TABS_Y + TAB_CONTENT_HEIGHT # Create main tabbed panel tabs = TabbedPanel(tab_width=TAB_HEADER_WIDTH, tab_height=TAB_HEADER_HEIGHT, width=TABS_WIDTH, height=TABS_HEIGHT) tabs.x = TABS_X tabs.y = TABS_Y self.main_layout.add_widget(tabs) self.tabs = tabs # Music tab (default) music_tab_content = Widget(width=TABS_WIDTH, height=TAB_CONTENT_HEIGHT) tabs.default_tab_content = music_tab_content tabs.default_tab.text = "" # TODO: make these paths absolute? tabs.default_tab.background_normal = \ os.path.join(IMAGE_DIR, "audio-keyboard.png") print "@@ default tab bg: ", tabs.default_tab.background_normal tabs.default_tab.background_down = \ os.path.join(IMAGE_DIR, "audio-keyboard-down.png") # Global music options global_music_label = Label(text='Global', font_size=SECTION_LABEL_FONT_SIZE, width=SECTION_LABEL_WIDTH, height=SECTION_LABEL_HEIGHT, text_size=SECTION_LABEL_TEXT_SIZE, halign='center', valign='middle') global_music_label.center_x = tabs.center_x global_music_label.top = TAB_CONTENT_TOP - TAB_SECTION_PADDING music_tab_content.add_widget(global_music_label) MUSIC_SLIDER_WIDTH = TABS_WIDTH - 40 MUSIC_SLIDER_HEIGHT = 20 # Note: these sliders buttons have a predefined height, so we are a # slave to that height for positioning the sliders global_volume_slider = NSSlider(min=MusicPlayer.MIN_VOLUME, max=MusicPlayer.MAX_VOLUME, value=music_player.global_volume, orientation='horizontal', height=MUSIC_SLIDER_HEIGHT, width=MUSIC_SLIDER_WIDTH) global_volume_slider.bind(on_touch_move=self.change_global_volume) global_volume_slider.center_x = tabs.center_x global_volume_slider.top = global_music_label.y - TAB_ELEMENT_PADDING music_tab_content.add_widget(global_volume_slider) self.global_volume_slider = global_volume_slider self.colorables.append(global_volume_slider) global_volume_label = Label(text='Volume', font_size=ELEMENT_LABEL_FONT_SIZE, width=ELEMENT_LABEL_WIDTH, height=ELEMENT_LABEL_HEIGHT, text_size=ELEMENT_LABEL_TEXT_SIZE, halign='center', valign='middle') global_volume_label.center_x = tabs.center_x global_volume_label.top = global_volume_slider.y - TAB_ELEMENT_PADDING music_tab_content.add_widget(global_volume_label) global_tempo_slider = NSSlider(min=MusicPlayer.MIN_TEMPO, max=MusicPlayer.MAX_TEMPO, value=music_player.tempo, orientation='horizontal', height=MUSIC_SLIDER_HEIGHT, width=MUSIC_SLIDER_WIDTH) global_tempo_slider.bind(on_touch_move=self.change_global_tempo) global_tempo_slider.center_x = tabs.center_x global_tempo_slider.top = global_volume_label.y - TAB_ELEMENT_PADDING music_tab_content.add_widget(global_tempo_slider) self.global_tempo_slider = global_tempo_slider self.colorables.append(global_tempo_slider) global_tempo_label = Label(text='Tempo', font_size=ELEMENT_LABEL_FONT_SIZE, width=ELEMENT_LABEL_WIDTH, height=ELEMENT_LABEL_HEIGHT, text_size=ELEMENT_LABEL_TEXT_SIZE, halign='center', valign='middle') global_tempo_label.center_x = tabs.center_x global_tempo_label.top = global_tempo_slider.y - TAB_ELEMENT_PADDING music_tab_content.add_widget(global_tempo_label) # Instrument settings track_music_label = Label(text='Instrument', font_size=SECTION_LABEL_FONT_SIZE, width=SECTION_LABEL_WIDTH, height=SECTION_LABEL_HEIGHT, text_size=SECTION_LABEL_TEXT_SIZE, halign='center', valign='middle') track_music_label.center_x = tabs.center_x track_music_label.top = global_tempo_label.y - TAB_SECTION_PADDING music_tab_content.add_widget(track_music_label) track_volume_initial = music_player.get_volume(self.track_id) track_volume_slider = NSSlider(min=MusicPlayer.MIN_VOLUME, max=MusicPlayer.MAX_VOLUME, value=track_volume_initial, orientation='horizontal', height=MUSIC_SLIDER_HEIGHT, width=MUSIC_SLIDER_WIDTH) track_volume_slider.bind(on_touch_move=self.change_track_volume) track_volume_slider.center_x = tabs.center_x track_volume_slider.top = track_music_label.y - TAB_ELEMENT_PADDING music_tab_content.add_widget(track_volume_slider) self.track_volume_slider = track_volume_slider self.colorables.append(track_volume_slider) track_volume_label = Label(text='Volume', font_size=ELEMENT_LABEL_FONT_SIZE, width=ELEMENT_LABEL_WIDTH, height=ELEMENT_LABEL_HEIGHT, text_size=ELEMENT_LABEL_TEXT_SIZE, halign='center', valign='middle') track_volume_label.center_x = tabs.center_x track_volume_label.top = track_volume_slider.y - TAB_ELEMENT_PADDING music_tab_content.add_widget(track_volume_label) track_reverb_initial = music_player.get_reverb(self.track_id) track_reverb_slider = NSSlider(min=MusicPlayer.MIN_REVERB, max=MusicPlayer.MAX_REVERB, value=track_reverb_initial, orientation='horizontal', height=MUSIC_SLIDER_HEIGHT, width=MUSIC_SLIDER_WIDTH) track_reverb_slider.bind(on_touch_move=self.change_track_reverb) track_reverb_slider.center_x = tabs.center_x track_reverb_slider.top = track_volume_label.y - TAB_ELEMENT_PADDING music_tab_content.add_widget(track_reverb_slider) self.track_reverb_slider = track_reverb_slider self.colorables.append(track_reverb_slider) track_reverb_label = Label(text='Reverb', font_size=ELEMENT_LABEL_FONT_SIZE, width=ELEMENT_LABEL_WIDTH, height=ELEMENT_LABEL_HEIGHT, text_size=ELEMENT_LABEL_TEXT_SIZE, halign='center', valign='middle') track_reverb_label.center_x = tabs.center_x track_reverb_label.top = track_reverb_slider.y - TAB_ELEMENT_PADDING music_tab_content.add_widget(track_reverb_label) # Network tab network_tab = TabbedPanelHeader() network_tab.text = "" network_tab.background_normal = \ os.path.join(IMAGE_DIR, "network-wired-2.png") network_tab.background_down = \ os.path.join(IMAGE_DIR, "network-wired-2-down.png") tabs.add_widget(network_tab) TEXT_INPUT_HEIGHT = 30 PORT_INPUT_WIDTH = 70 IP_INPUT_WIDTH = TABS_WIDTH - TAB_SECTION_PADDING - \ PORT_INPUT_WIDTH - TAB_ELEMENT_PADDING - \ TAB_SECTION_PADDING PORT_LABEL_TEXT_SIZE = [PORT_INPUT_WIDTH, ELEMENT_LABEL_HEIGHT] IP_LABEL_TEXT_SIZE = [IP_INPUT_WIDTH, ELEMENT_LABEL_HEIGHT] NETWORK_BUTTON_WIDTH = TABS_WIDTH - TAB_SECTION_PADDING * 2 NETWORK_BUTTON_HEIGHT = 80 NETWORK_BUTTON_FONT_SIZE = 16 NETWORK_BUTTON_TEXT_SIZE = [NETWORK_BUTTON_WIDTH, NETWORK_BUTTON_HEIGHT] SERVER_PORT_TEXT = 'Server Port' SERVER_IP_TEXT = 'Server IP Address' network_tab_content = Widget(width=TABS_WIDTH, height=TAB_CONTENT_HEIGHT) network_tab.content = network_tab_content # Server input labels server_port_label = Label(text=SERVER_PORT_TEXT, width=PORT_INPUT_WIDTH, height=ELEMENT_LABEL_HEIGHT, text_size=PORT_LABEL_TEXT_SIZE, font_size=ELEMENT_LABEL_FONT_SIZE) server_port_label.top = TAB_CONTENT_TOP - TAB_SECTION_PADDING server_port_label.x = TABS_X + TAB_SECTION_PADDING network_tab_content.add_widget(server_port_label) server_ip_label = Label(text=SERVER_IP_TEXT, width=IP_INPUT_WIDTH, height=ELEMENT_LABEL_HEIGHT, text_size=IP_LABEL_TEXT_SIZE, font_size=ELEMENT_LABEL_FONT_SIZE) server_ip_label.top = server_port_label.top server_ip_label.x = server_port_label.right + TAB_ELEMENT_PADDING network_tab_content.add_widget(server_ip_label) # Server startup input server_port_input = NSTextInput(text='', width=PORT_INPUT_WIDTH, height=TEXT_INPUT_HEIGHT, multiline=False) server_port_input.bind(focus=self.select_text_input) server_port_input.original_text = SERVER_PORT_TEXT server_port_input.x = server_port_label.x server_port_input.top = server_port_label.y - TAB_ELEMENT_PADDING network_tab_content.add_widget(server_port_input) self.server_port_input = server_port_input server_ip_input = NSTextInput(text='', width=IP_INPUT_WIDTH, height=TEXT_INPUT_HEIGHT, multiline=False) server_ip_input.bind(focus=self.select_text_input) server_ip_input.original_text=SERVER_IP_TEXT server_ip_input.x = server_ip_label.x server_ip_input.top = server_port_input.top network_tab_content.add_widget(server_ip_input) self.server_ip_input = server_ip_input server_start_button = NSDisableButton(text='Start server', width=NETWORK_BUTTON_WIDTH, height=NETWORK_BUTTON_HEIGHT, text_size=NETWORK_BUTTON_TEXT_SIZE, font_size=NETWORK_BUTTON_FONT_SIZE, halign='center', valign='middle') server_start_button.bind(on_press=self.start_server) server_start_button.center_x = tabs.center_x server_start_button.top = server_ip_input.y - TAB_ELEMENT_PADDING network_tab_content.add_widget(server_start_button) self.server_start_button = server_start_button join_server_button = NSDisableButton(text='Join server', width=NETWORK_BUTTON_WIDTH, height=NETWORK_BUTTON_HEIGHT, text_size=NETWORK_BUTTON_TEXT_SIZE, font_size=NETWORK_BUTTON_FONT_SIZE, halign='center', valign='middle') join_server_button.bind(on_press=self.ask_join_server) join_server_button.x = server_start_button.x join_server_button.top = server_start_button.y - TAB_ELEMENT_PADDING network_tab_content.add_widget(join_server_button) self.join_server_button = join_server_button end_connection_button = NSDisableButton(text='End connection', width=NETWORK_BUTTON_WIDTH, height=NETWORK_BUTTON_HEIGHT, text_size=NETWORK_BUTTON_TEXT_SIZE, font_size=NETWORK_BUTTON_FONT_SIZE, halign='center', valign='middle') end_connection_button.bind(on_press=self.ask_end_connection) end_connection_button.disable() end_connection_button.x = server_start_button.x end_connection_button.top = join_server_button.y - TAB_ELEMENT_PADDING network_tab_content.add_widget(end_connection_button) self.end_connection_button = end_connection_button # System options tab system_tab = TabbedPanelHeader() system_tab.background_normal = \ os.path.join(IMAGE_DIR, "media-floppy.png") system_tab.background_down = \ os.path.join(IMAGE_DIR, "media-floppy-down.png") tabs.add_widget(system_tab) system_tab_content = Widget(width=TABS_WIDTH, height=TAB_CONTENT_HEIGHT) system_tab.content = system_tab_content NUM_SYSTEM_BUTTONS = 3 SYSTEM_BUTTON_PADDING = 20 SYSTEM_BUTTON_FONT_SIZE = 24 SYSTEM_BUTTON_WIDTH = TABS_WIDTH - SYSTEM_BUTTON_PADDING * 2 SYSTEM_BUTTON_HEIGHT = (TAB_CONTENT_HEIGHT - SYSTEM_BUTTON_PADDING * (NUM_SYSTEM_BUTTONS + 1)) / NUM_SYSTEM_BUTTONS SYSTEM_BUTTON_TEXT_SIZE = [SYSTEM_BUTTON_WIDTH, SYSTEM_BUTTON_HEIGHT] # Load button load_button = NSDisableButton(text='Load', width=SYSTEM_BUTTON_WIDTH, height=SYSTEM_BUTTON_HEIGHT, text_size=SYSTEM_BUTTON_TEXT_SIZE, font_size=SYSTEM_BUTTON_FONT_SIZE, halign='center', valign='middle') load_button.bind(on_press=self.load_file) load_button.center_x = tabs.center_x load_button.top = TAB_CONTENT_TOP - SYSTEM_BUTTON_PADDING system_tab_content.add_widget(load_button) self.load_button = load_button # Save button save_button = NSDisableButton(text='Save', width=SYSTEM_BUTTON_WIDTH, height=SYSTEM_BUTTON_HEIGHT, text_size=SYSTEM_BUTTON_TEXT_SIZE, font_size=SYSTEM_BUTTON_FONT_SIZE, halign='center', valign='middle') save_button.bind(on_press=self.save_file) save_button.center_x = tabs.center_x save_button.top = load_button.y - SYSTEM_BUTTON_PADDING system_tab_content.add_widget(save_button) # Quit button quit_button = NSDisableButton(text='Quit', width=SYSTEM_BUTTON_WIDTH, height=SYSTEM_BUTTON_HEIGHT, text_size=SYSTEM_BUTTON_TEXT_SIZE, font_size=SYSTEM_BUTTON_FONT_SIZE, halign='center', valign='middle') quit_button.bind(on_press=self.request_exit) quit_button.center_x = tabs.center_x quit_button.top = save_button.y - SYSTEM_BUTTON_PADDING system_tab_content.add_widget(quit_button) # APPLICATION TITLE TITLE_WIDTH = TABS_WIDTH TITLE_HEIGHT = 50 TITLE_TEXT_SIZE = [TITLE_WIDTH, TITLE_HEIGHT] TITLE_FONT_SIZE = 30 SUBTITLE_WIDTH = TITLE_WIDTH SUBTITLE_HEIGHT = 30 SUBTITLE_TEXT_SIZE = [SUBTITLE_WIDTH, SUBTITLE_HEIGHT] SUBTITLE_FONT_SIZE = 15 TITLE_X = TABS_X title_label = Label(text='NetSeq', width=TITLE_WIDTH, height=TITLE_HEIGHT, halign='center', valign='middle', text_size=TITLE_TEXT_SIZE, font_size=TITLE_FONT_SIZE) title_label.top = PLAYBACK_TOP title_label.x = TITLE_X self.main_layout.add_widget(title_label) subtitle_label = Label(text='Music with Friends', width=SUBTITLE_WIDTH, height=SUBTITLE_HEIGHT, text_size=SUBTITLE_TEXT_SIZE, font_size=SUBTITLE_FONT_SIZE, halign='center', valign='middle') subtitle_label.top = title_label.y subtitle_label.x = TITLE_X self.main_layout.add_widget(subtitle_label) # Finishing steps self.set_color(self.track_id) self.reload_row_labels()
def draw_db(self, db): for table in db.values(): th = TabbedPanelHeader(text=table['name']) th.content = TableWidget(self.ctrl, table) self.add_widget(th)
def make_server_tab(self): server_tab = TabbedPanelHeader(text="Server") server_widget = Widget() self.bob = None self.send = False self.msg = "" self.done_auth = False # Console txt_console = TextInput(multiline=True) txt_console.pos = (75, 75) txt_console.size = (650, 200) txt_console.readonly = True server_widget.add_widget(txt_console) def print_console(msg): txt_console.text = txt_console.text + "\n" + msg txt_console.cursor = (999, 999) # Config label lbl_config = Label(text="Server Config") lbl_config.pos = (75, 525) lbl_config.size = (100, 40) lbl_config.halign = "left" lbl_config.text_size = lbl_config.size lbl_config.bold = True server_widget.add_widget(lbl_config) # Port label lbl_port = Label(text="Port") lbl_port.pos = (125, 450) lbl_port.size = (100, 30) lbl_port.halign = "right" lbl_port.valign = "middle" lbl_port.text_size = lbl_port.size server_widget.add_widget(lbl_port) # Port input txt_port = TextInput(multiline=False, text="9001") txt_port.pos = (250, 450) txt_port.size = (150, 30) server_widget.add_widget(txt_port) # Secret label lbl_secret = Label(text="Secret") lbl_secret.pos = (125, 400) lbl_secret.size = (100, 30) lbl_secret.halign = "right" lbl_secret.valign = "middle" lbl_secret.text_size = lbl_secret.size server_widget.add_widget(lbl_secret) # Secret input txt_secret = TextInput(multiline=False, text="foobar") txt_secret.pos = (250, 400) txt_secret.size = (150, 30) server_widget.add_widget(txt_secret) # Start button def on_server_btn_start(instance): btn_start.disabled = True txt_secret.readonly = True txt_port.readonly = True print_console("Starting Server on port " + txt_port.text) self.bob = None while self.bob is None: try: self.bob = ChatClientServer("0.0.0.0", int(txt_port.text)) except socket.error as e: log( logging.warning, self, self.make_server_tab, "Error occurred while trying to connect: " "socket.error: {}; retrying...".format(e), ) sleep(1) print_console("Setting shared key to " + txt_secret.text) self.bob.set_shared_key(txt_secret.text.encode()) btn_start = Button(text="Start Server") btn_start.pos = (500, 395) btn_start.size = (200, 100) btn_start.bind(on_release=on_server_btn_start) server_widget.add_widget(btn_start) # Separator line with server_widget.canvas: Rectangle(pos=(75, 350), size=(650, 2)) # Communication label lbl_comm = Label(text="Server Communication") lbl_comm.pos = (75, 300) lbl_comm.size = (400, 40) lbl_comm.halign = "left" lbl_comm.text_size = lbl_comm.size lbl_comm.bold = True server_widget.add_widget(lbl_comm) # Message box txt_message = TextInput(multiline=False) txt_message.pos = (75, 25) txt_message.size = (450, 30) server_widget.add_widget(txt_message) # Send button def on_server_btn_send(instance): if self.done_auth: self.send = True self.msg = txt_message.text btn_send.disabled = True txt_message.text = "" print_console("Will send [" + self.msg + "] on next 'Continue'") else: print_console("Finish authentication first!") btn_send = Button(text="Send") btn_send.pos = (535, 25) btn_send.size = (90, 30) btn_send.bind(on_release=on_server_btn_send) server_widget.add_widget(btn_send) # Continue button def on_server_btn_continue(instance): if self.bob is not None: if self.done_auth: try: if self.send: print_console("Sending [" + self.msg + "]") self.bob.send(self.msg.encode()) self.send = False btn_send.disabled = False self.msg = "" else: data = self.bob.recv(nb=True) if data is not None: print_console("Received [" + data + "]") else: print_console("No data to receive") except NoAuthentication: print_console("We are not authenticated. Reset authentication steps.") self.bob.mutauth_step(reset=True) except DataIntegrityException: print_console( "Either Trudy is attacking or more than one message was received. Not going to display the message. Tell your friend to send only one message at a time." ) else: try: print_console("Performing a mutual authentication step") self.bob.mutauth_step() except BeingAttacked: print_console("We are being attacked! Reset authentication steps.") self.bob.mutauth_step(reset=True) except NoSharedKey: print_console("Shared key is not yet shared. Please share first") self.bob.mutauth_step(reset=True) except StopIteration: print_console("Successfully Authenticated") self.done_auth = True btn_continue = Button(text="Continue") btn_continue.pos = (635, 25) btn_continue.size = (90, 30) btn_continue.bind(on_release=on_server_btn_continue) server_widget.add_widget(btn_continue) server_tab.content = server_widget return server_tab
def build(self): tab_panel= TabbedPanel() tab_panel.do_default_tab = False tab_panel.tab_width = 150 tab_panel.tab_height = 30 th_playlist = TabbedPanelHeader(text='Playlist Playout') th_playlist.content = Label(text='UI to create a playlist rundown') th_generic_live = TabbedPanelHeader(text='Generic Live Event') th_generic_live.content = Label(text='UI for running random live events') th_news = TabbedPanelHeader(text='News Broadcast') th_news.content = Label(text='UI for running a live news broadcast') th_worship = TabbedPanelHeader(text='Worship') th_worship.content= Label(text='UI for running praise & worships') th_football = TabbedPanelHeader(text='Football') th_football.content= Label(text='UI for running a football match') th_volleyball = TabbedPanelHeader(text='Volleyball') th_volleyball.content= Label(text='UI for running a volleyball match') tab_panel.add_widget(th_playlist) tab_panel.add_widget(th_generic_live) tab_panel.add_widget(th_news) tab_panel.add_widget(th_worship) tab_panel.add_widget(th_football) tab_panel.add_widget(th_volleyball) tab_panel.default_tab = th_playlist return tab_panel
def get_tab_objetivos(texto_tab, ciclo_id): tab=TabbedPanelHeader(text=texto_tab) tab.content=Button(text=texto_tab) return tab
def build(self): #*******THE-ROOT-WIDGET****** root = GridLayout(cols=1, rows=2, spacing=10) #*******CHILDREN-OF-ROOT-WIDGET****** layouttop = GridLayout(cols=3, rows=1) layouttop.size_hint = (1, 0.1) layoutmid = GridLayout(cols=1, spacing=10) #******CHILDREN-OF-LAYOUTTOP****** menubtn = Button() menubtn.size_hint = (0.1, 0.1) head = Label(text='PRO-FORMA',size_hint_y = None,size_hint_x=None, width=200) head.size_hint = (0.8, 0.1) backbtn = Button() backbtn.size_hint = (0.1, 0.1) #******CHILDREN-OF-LAYOUTMID****** tp_panel = TabbedPanel() #___*******TAB1*****************************___# th_tab1 = TabbedPanelHeader(text = 'Info. Tab') layoutinfo = GridLayout(rows=2) layoutinfo.add_widget(Label(text='Powered by kivy')) #*******CALLING-SUB-WIDGETS-TAB2****** th_tab1.content = layoutinfo tp_panel.add_widget(th_tab1) #___*******TAB2*****************************___# th_tab2 = TabbedPanelHeader(text = 'Pro-Forma') #******children-of-tab1****** scroll = ScrollView(size_hint=(None, None), size=(800, 1000), pos_hint={'center_x':1,'center_y':1}) mainlayout = GridLayout(cols = 1, spacing = 10, size_hint_y=None) mainlayout.bind(minimum_height=mainlayout.setter('height')) #children-of-main-layout layouttab1 = GridLayout(cols=2, pos_hint ={'center_x': 1, 'center_y': 1},row_force_default=True, row_default_height=40, size_hint_y=None, height = 250) layoutmix = GridLayout(cols=4, pos_hint ={'center_x': 1, 'center_y': 1},row_force_default=True, row_default_height=40 ,size_hint_y=None, height = 80) layoutexpense = GridLayout(cols=2, pos_hint ={'center_x': 1, 'center_y': 1},row_force_default=True, row_default_height=40, size_hint_y=None, height = 1000) layoutacc = GridLayout(cols=1, pos_hint ={'center_x': 1, 'center_y': 1},row_force_default=True, row_default_height=40, size_hint_y=None, height = 250) #******CONTENT1******* mainlayout.add_widget(Label(text='Property Information',size_hint_y=None, height=50)) #*******CONTENT2******* layouttab1.add_widget(Label(text= 'Property Name', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Property Address', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Town/City', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Asking Price', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Total Units', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) layouttab1.add_widget(Label(text= 'Square Footage', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp')) layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle')) mainlayout.add_widget(layouttab1) #*******CONTENT3******* mainlayout.add_widget(Label(text='Unit Mix',size_hint_x=None, width=200, size_hint_y=None, height=50)) #*******CONTENT4******* layoutmix.add_widget(Label(text='# of Units')) layoutmix.add_widget(Label(text='Unit Type')) layoutmix.add_widget(Label(text='SquareFeet')) layoutmix.add_widget(Label(text='Monthly Rent')) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) layoutmix.add_widget(TextInput(text='Input', font_size=15)) mainlayout.add_widget(layoutmix) #*******CONTENT5******* mainlayout.add_widget(Label(text='Expenses',size_hint_x=None, width=200, size_hint_y=None, height=50)) #*******CONTENT6******* layoutexpense.add_widget(Label(text='Accounting')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Advertising')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Bank Charges')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Electricity')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Gas')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Security')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='All insurance')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Permits and fees')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Maintenance')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='Trash Pick-up')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) layoutexpense.add_widget(Label(text='All other')) layoutexpense.add_widget(TextInput(text='Input', font_size=15)) mainlayout.add_widget(layoutexpense) #*******CONTENT7******* mainlayout.add_widget(Label(text='Accounts',size_hint_x=None, width=200, size_hint_y=None, height=50)) #*******CONTENT8layoutacc layoutacc.add_widget(Label(text='Select your financing type')) mainlayout.add_widget(layoutacc) #*******CALLING-SUB-WIDGETS-TAB2****** scroll.add_widget(mainlayout) th_tab2.content = scroll tp_panel.add_widget(th_tab2) #___*******TAB3*******___# th_tab3 = TabbedPanelHeader(text = 'Saved Reports') #*******CALLING-SUB-WIDGETS-TAB3****** tp_panel.add_widget(th_tab3) #******CALLING-WIDGETS****** layouttop.add_widget(menubtn) layouttop.add_widget(head) layouttop.add_widget(backbtn) layoutmid.add_widget(tp_panel) root.add_widget(layouttop) root.add_widget(layoutmid) #******RETURN-ROOT****** return root