def build(self): Window.size = 1280, 200 slider_layout = BoxLayout( orientation='horizontal', padding=[40], ) slider_layout.bind( on_touch_down=self._on_touch_down, on_touch_move=self._on_touch_move, on_touch_up=self._on_touch_up, ) buttons = [] for i in range(32): btn = Button( text=str(i), background_color=(0, 0, 0, 1), background_normal='', background_down='', ) buttons.append(btn) slider_layout.add_widget(btn) self._slider_buttons = buttons Clock.schedule_interval(self._set_slider_colors, 1 / 60) self._set_noactivate() return slider_layout
def _create_popup(self, instance): loc_select = BoxLayout(orientation='vertical', spacing='5dp', size_hint_y=None, height=500) loc_select.bind(minimum_height=loc_select.setter('height')) self.popup = popup = ScrollablePopup() popup.scroll_lay.add_widget(loc_select) for loc in sorted(location_manager.locations): btn = Button(text=loc, size_hint_y=None, height=50) btn.bind(on_release=self._create_options) loc_select.add_widget(btn) box = BoxLayout(size_hint_y=None, height=dp(50), pos_hint={ 'y': 0, 'x': 0 }) popup.button_lay.add_widget(box) btn = Button(text='Done', size_hint_y=None, height=dp(50)) btn.bind(on_release=self._set_options) box.add_widget(btn) btn = Button(text='Cancel', size_hint_y=None, height=dp(50)) btn.bind(on_release=self._dismiss) box.add_widget(btn) popup.open()
def build(self): """ Overridden method from the Kivy library that defines the root widget Returns: A widget, in this case a BoxLayout that defines spacing """ parent = BoxLayout(orientation='horizontal', spacing=5, padding=5) with parent.canvas.before: Color(0.9, 0.9, 0.9, 1) # green; colors range from 0-1 instead of 0-255 self.rect = Rectangle(size=parent.size, pos=parent.pos) def update_rect(instance, value): self.rect.pos = instance.pos self.rect.size = instance.size parent.bind(pos=update_rect, size=update_rect) l_control_panel = ControlPanel(size_hint=(0.25, 1)) l_tile_map = TileMap(l_control_panel, parent.width, parent.height, 5, size_hint=(0.75, 1)) l_control_panel.set_tile_map(l_tile_map) parent.add_widget(l_control_panel) parent.add_widget(l_tile_map) return parent
class SideMenu(BoxLayout): def __init__(self, map, **kwargs): super().__init__(**kwargs) self.width = 0 self.scrollView = ScrollView(do_scroll_y=True) self.scrollView.clear_widgets() self.sideMenuItems = [] self.boxView = BoxLayout(orientation="vertical", size_hint_y=None) self.boxView.bind(minimum_height=self.boxView.setter('height')) self.scrollView.add_widget(self.boxView) self.add_widget(self.scrollView) def close(self): self.width = 0 def open(self): self.width = 200 def up(self): for i in range(len(self.sideMenuItems)): if(self.sideMenuItems[i].selected and i > 0): self.selectByIndex(i-1) break def down(self): for i in range(len(self.sideMenuItems)): if(self.sideMenuItems[i].selected and i < len(self.sideMenuItems)): self.selectByIndex(i+1) break def resetColors(self): for sideMenuItem in self.sideMenuItems: sideMenuItem.resetColor() def selectByIndex(self, index): if(len(self.sideMenuItems) > index): self.sideMenuItems[index].selectWithCallback() def select(self, state): for sideMenuItem in self.sideMenuItems: if( sideMenuItem.contentState == state): sideMenuItem.select() def clearItems(self): self.boxView.clear_widgets() self.sideMenuItems = [] def addSideMenuItem(self, sideMenuItem): self.boxView.add_widget(sideMenuItem) self.sideMenuItems.append(sideMenuItem) sideMenuItem.setSideMenu(self) def clearAndAddSideMenuItems(self, sideMenuItems): self.clearItems() for sideMenu in sideMenuItems: self.addSideMenuItem(sideMenu)
class TodoList(BoxLayout): progression = StringProperty("0/0") def __init__(self, **kwargs): super().__init__(**kwargs) self.box = BoxLayout(orientation="vertical", size_hint_y=None) self.box.bind(minimum_height=self.box.setter("height")) self.load_items() sc = ScrollView(do_scroll_x=False) sc.add_widget(self.box) self.add_widget(sc) def load_items(self): with db_session: items = [x.to_dict() for x in db.Item.todo_list()] if not items: return date_en_cours = items[0]["date"] self.add_date_label(date_en_cours) for it in items: if it["date"] != date_en_cours: date_en_cours = it["date"] self.add_date_label(it["date"]) self.box.add_widget(TodoItemWidget(**it)) def add_date_label(self, date): self.box.add_widget(DateLabel(text=date.strftime("%A %d %B %Y")))
class SpeedGrid: def __init__(self, pause_callback: callable, speed_updated: callable, reset_callback: callable): self.force = {} self.speed_updated = speed_updated self.grid = BoxLayout(orientation='vertical', spacing=5, size_hint=(0.35, 0.15), height=Window.height * 0.5, pos_hint={ 'top': 0.97, 'center_x': 0.8 }) self.grid.bind(height=self.grid.setter('top')) self.grid.add_widget(self._add_speed_label_and_input("vx")) self.grid.add_widget(self._add_speed_label_and_input("vy")) g = GridLayout(cols=2) self.pause_btn = Button(text="Start", background_color=(0, 1, 0, 1), pos=(Window.width - 150, 20)) self.pause_btn.bind(on_release=pause_callback) self.reset_btn = Button(text="Reset", background_color=(0, 1, 0, 1), pos=(Window.width - 150, 20)) self.reset_btn.bind(on_release=reset_callback) g.add_widget(self.pause_btn) g.add_widget(self.reset_btn) self.grid.add_widget(g) def _add_speed_label_and_input(self, name: str): g = GridLayout(cols=3, padding=[2] * 4) label = MyLabel(text=name, bg_color=(1, 0, 0, 1), size_hint_x=0.15) g.add_widget(label) slider = Slider(orientation='horizontal', value_track=True, value_track_color=[0, 0, 1, 1], min=-100, max=100, step=1, value=0.0, size_hint_x=0.7) slider.bind(value=self._on_slider_value_updated) setattr(self, name, slider) g.add_widget(slider) label = MyLabel(text="0.0", bg_color=(1, 0, 0, 1), size_hint_x=0.15) setattr(self, f"{name}_value", label) g.add_widget(label) return g def _on_slider_value_updated(self, *args): for name in ['vx', 'vy']: val = round(getattr(self, name).value, 1) print(name, val) label = MyLabel(text=str(val), bg_color=(1, 0, 0, 1), size_hint_x=0.15) setattr(self, f"{name}_value", label) self.speed_updated()
def handle_exception(self, exception): # app = App.get_running_app() # If the current problem is cleared, "accept" the next one: if self._current_exception is None: # In order to make a new dialog, we get rid of a previous one if any: self._error_dialog = None # While showing the popup to the user with the error's stacktrace, all subsequent calls to handle_exception() should PASS. It turns out that while in error, that his method is constantly triggered!! self._PASS_or_RAISE = ExceptionManager.PASS if self._error_dialog is None: self._current_exception = exception bl1 = BoxLayout(orientation='vertical', spacing="12dp", size_hint_y=None) # Make sure the height is such that there is something to scroll. bl1.bind(minimum_height=bl1.setter('height')) mdlbl1 = MDLabel( text= f"[color={get_hex_from_color((1, 0, 0))}][i]{str(self._current_exception)}[/i][/color]{os.linesep}{os.linesep}" f"[b]-> Our apologies for the inconvenience, please consult the stack trace below & mail screenshot to [email protected]:[/b]" f"{os.linesep}{traceback.format_exc()}", size_hint=(1, None), markup=True) # TODO: Rather try the .kv alternative also provided at "https://stackoverflow.com/questions/43666381/wrapping-the-text-of-a-kivy-label" and "https://kivy.org/doc/stable/api-kivy.uix.scrollview.html" that will cleaner and more maintainable mdlbl1.bind( width=lambda *args, **kwargs: mdlbl1.setter('text_size') (mdlbl1, (mdlbl1.width, None)), texture_size=lambda *args, **kwargs: mdlbl1.setter( 'height')(mdlbl1, mdlbl1.texture_size[1])) bl1.add_widget(mdlbl1) content_obj = ScrollView(do_scroll_x=False, do_scroll_y=True, size_hint=(1, None), scroll_type=['bars', 'content']) content_obj.add_widget(bl1) self._error_dialog = CU.show_input_dialog( title= f"{CU.tfs.dic['APP_NAME'].value} Encountered an Error & Needs to Shut Down", content_obj=content_obj, size_hint=(.8, .6), text_button_ok="Quit", text_button_cancel="Proceed @ Own Risk", ok_callback_set=lambda *args, **kwargs: (self.set_raise_or_pass(ExceptionManager.RAISE)), cancel_callback_set=lambda *args, **kwargs: (toast("Fingers crossed"), self.set_raise_or_pass(ExceptionManager.PASS))) return self._PASS_or_RAISE
def BuildButtonss(self, blist, layout, buttons): layout = BoxLayout(orientation='vertical', size_hint_y=None, size_hint_x=1) # Make sure the height is such that there is something to scroll. layout.bind(minimum_height=layout.setter('height')) for i in range(3): btn = Button(text=str(i), size_hint_y=None, height=60, width=300) layout.add_widget(btn) return layout
class SV(ScrollView): def __init__(self, **kwargs): super(SV, self).__init__(**kwargs) self.layout = BoxLayout(cols=20, size_hint=(None, None)) for i in range(1000): self.layout.add_widget( MyButton(text=str(i), size_hint=(None, None))) self.layout.bind(minimum_height=self.layout.setter('height'), minimum_width=self.layout.setter('width')) self.add_widget(self.layout)
class AddIten(Popup): """Popup to add an iten to the order.""" def close_btn_touch(self, btn, touch): """Close and cancel.""" if is_left_click(btn, touch): self.dismiss() def new_iten_btn_touch(self, btn, touch): """Add a new iten.""" if is_left_click(btn, touch): self.dismiss() NewIten().open() def __init__(self, **kwargs): """Initialization method with style information.""" super().__init__(**kwargs) self.title = "Adicionar Item" self.title_size = 25 self.title_align = 'center' self.size_hint = .7, .7 self.content = BoxLayout(orientation='vertical') self.grid = BoxLayout(orientation="vertical", size_hint_y=None) self.grid.bind(minimum_height=self.grid.setter('height')) scroll = ScrollView() scroll.add_widget(self.grid) self.content.add_widget(scroll) buttons = BoxLayout(size_hint_y=None, height=60) buttons.add_widget( BorderedButton(background_color=(1, 0, 0, 1), on_touch_down=self.close_btn_touch, text="Fechar", font_size=25, size_hint_y=None, height=60)) buttons.add_widget( BorderedButton(background_color=(0, 1, 0, 1), text="Novo Item", on_touch_down=self.new_iten_btn_touch, font_size=25, size_hint_y=None, height=60)) self.content.add_widget(buttons) def on_open(self): """Get all the itens options.""" app = App.get_running_app() for iten in app.session.query(Iten).all(): self.grid.add_widget(ItenToAdd(iten)) def on_dismiss(self): """Clear the current itens when closed.""" self.grid.clear_widgets()
def manuPage(self): layout=BoxLayout(orientation='vertical') layout.bind(minimum_height=layout.setter('height')) layout.add_widget(Button(text='课程-岗位',size=(20,10))) layout.add_widget(Button(text='test_btn2', size=(20, 10))) layout.add_widget(Button(text='test_btn3', size=(20, 10))) layout.add_widget(Button(text='test_btn4', size=(20, 10))) layout.add_widget(Button(text='test_btn5', size=(20, 10))) root = ScrollView(do_scroll_x=False,do_scroll_y=True,size_hint=(0.2,0.8),size=(80,800),pos_hint ={'center_x': .12, 'center_y': .45}) root.add_widget(layout) return root
def build_labels(self): layout = BoxLayout(orientation="vertical", size_hint=(0.5, 1)) layout.bind(width=self._update_labels) self.label1 = MyLabel(size_hint=(1,0.2), font_size=24, halign="center", underline=True) self.label2 = MyLabel(size_hint=(1,0.8), font_size=18, halign="left") layout.add_widget(self.label1) layout.add_widget(self.label2) return layout
def setup_gui(self): Config.set('graphics', 'width', '200') Config.set('graphics', 'height', '200') Window.size = (500, 300) layout = BoxLayout(orientation='vertical') layout.bind(minimum_height=layout.setter('height')) self.textbox = TextInput(size_hint_y=.1, multiline=False) self.textbox.bind(on_text_validate=self.send_message) self.label = ScrollableLabel(text='connecting...') layout.add_widget(self.label) layout.add_widget(self.textbox) return layout
def update_section_layout_from_course(self, course): self.pop_up.curr_course = course self.pop_up.selector_button.text = course.get_name() Functions.clear_layout(self.section_layout) grid_layout = GridLayout(cols=len(course.activity_dict.keys()), pos_hint={ 'center_x': .5, 'center_y': .5 }) for activity_key in course.activity_dict: grid_layout.add_widget( Label(text=Section.Section.activity_dict[activity_key], size_hint=(1, .1), pos_hint={ 'center_x': .5, 'center_y': .5 })) for activity_key in course.activity_dict: activity_layout = BoxLayout(orientation="vertical", padding=10, spacing=10, size_hint=(1, None), pos_hint={ 'center_x': .5, 'center_y': .5 }) activity_layout.bind( minimum_height=activity_layout.setter('height')) activity_layout.add_widget( ChoiceLayout(label_text="All", check_box_status=True)) for section in course.activity_dict[activity_key]: activity_layout.add_widget( ChoiceLayout(label_text=section.id, check_box_status=False)) scroll_view = ScrollView( size_hint=(1, 1), pos_hint={ 'center_x': .5, 'center_y': .5 }, do_scroll_x=False, ) scroll_view.add_widget(activity_layout) grid_layout.add_widget(scroll_view) self.section_layout.add_widget(grid_layout)
def workout_screen_init(self): secondary_layout = BoxLayout(orientation="vertical") layout = BoxLayout(orientation="vertical", spacing=10, size_hint_y=3) layout.bind(minimum_height=layout.setter('height')) secondary_layout.add_widget( Label(text="Wybierz rodzaj wysiłku sposród poniższych, lub wprowadź własny:", size_hint_y=None, height="40dp")) workouts = WorkoutRecycleView() workouts.show_workouts() secondary_layout.add_widget(workouts) secondary_layout.add_widget( Button(text="Dodaj własny", size_hint_y=None, height="40dp", on_release=self.add_activity)) return secondary_layout
def build(self): self.title = 'Выпали из пула' box = BoxLayout(orientation='vertical', size_hint_y=None) box.bind(minimum_height=box.setter('height')) info = json.loads(str(sys.stdin.read())) for i in info: for asic in i[0]: box.add_widget( Button(text='192.168.{}.{}'.format(i[1], asic), size_hint_y=None, height=40, color=(1, 0, 0, 1))) sv = ScrollView() sv.add_widget(box) return sv
def ui_layout(self): self.clear_widgets() layout = BoxLayout(orientation='vertical') scroll = ScrollView(do_scroll_x=False, size_hint=(1, None), size=(Window.width, Window.height)) scroll_box = BoxLayout(orientation='vertical', size_hint_y=None, padding=(dp(12), dp(60)), spacing=dp(5)) scroll_box.bind(minimum_height=scroll_box.setter('height')) # Add more self.scrollbox.add_widget(MDLabel(text='')) to increase padding scroll_box.add_widget(MDLabel(text=' ')) scroll_box.add_widget(MDLabel(text=' ')) scroll_box.add_widget(MDLabel(text=' ')) scroll_box.add_widget(MDLabel(text=' ', size_hint=(1, 5))) for contact in self.util.contact_list: contact_card = ContactCard(util=self.util, contact=contact ) scroll_box.add_widget(contact_card) scroll.add_widget(scroll_box) layout.add_widget(scroll) # Add floating action button to write messages add_contact_anchor = AnchorLayout(anchor_x='right', anchor_y='bottom', padding=[dp(25), dp(25), dp(25), dp(25)]) add_contact_btn = MDFloatingActionButton(icon='account-plus', size=[dp(56), dp(56)]) add_contact_btn.md_bg_color = App.get_running_app().theme_cls.primary_color add_contact_btn.theme_text_color = "Custom" add_contact_btn.text_color = [1, 1, 1, 1] add_contact_btn.bind(on_press=lambda x: self.change_screen('add_contact')) add_contact_anchor.add_widget(add_contact_btn) toolbar_anchor = AnchorLayout(anchor_x='center', anchor_y='top') toolbar = MDToolbar(title='Contacts', anchor_title='center') toolbar.md_bg_color = App.get_running_app().theme_cls.primary_color toolbar.left_action_items = [['arrow-left', lambda x: self.change_screen('message')]] toolbar_anchor.add_widget(toolbar) self.add_widget(layout) self.add_widget(add_contact_anchor) self.add_widget(toolbar_anchor) self.do_layout()
class Kniha(PageLayout): def __init__(self, nazev, *args, **kwargs): super(Kniha, self).__init__(*args, **kwargs) #Vytvoříme obal, který bude vše držet pospolu self.obal_layout = BoxLayout(orientation="vertical") #Vytvoříme si obal pro knížku self.layout = PageLayout(size_hint=(1, .9)) #Vytvoříme si stránku self.strana1 = BoxLayout(orientation="vertical") #Přidáme barvu do canvasu self.strana1.canvas.before.add(Color(rgba=(0.5, 0, 0.5, 1))) #Přidáme čtverec do canvasu self.ctverec1 = Rectangle(size=self.strana1.size, pos=self.strana1.pos) self.strana1.canvas.before.add(self.ctverec1) #Přidáme Label, který se zobrazí na stránce self.strana1.add_widget(Label(text=nazev)) #Vytvoříme si stránku self.strana2 = BoxLayout(orientation="vertical") #Přidáme barvu do canvasu self.strana2.canvas.before.add(Color(rgba=(0.5, 0.5, 0, 1))) #Přidáme čtverec do canvasu self.ctverec2 = Rectangle(size=self.strana2.size, pos=self.strana2.pos) self.strana2.canvas.before.add(self.ctverec2) #Přidáme Label, který se zobrazí na stránce self.strana2.add_widget(Label(text="Strana")) #Přídáme strany do PageLayoutu a ten přídáme do obalu self.layout.add_widget(self.strana1) self.layout.add_widget(self.strana2) self.obal_layout.add_widget(self.layout) #ZDE BUDE OVLÁDACÍ PANEL self.add_widget(self.obal_layout) self.strana1.bind(size=self.update, pos=self.update) self.strana2.bind(size=self.update, pos=self.update) def update(self, *args): self.ctverec1.size = self.size self.ctverec1.pos = self.strana1.pos self.ctverec2.size = self.size self.ctverec2.pos = self.strana2.pos
def __init__(self, title, labels_text, parent): root_layout = BoxLayout(orientation="vertical", padding="10dp") layout = BoxLayout(orientation="vertical", spacing=10, size_hint_y=None) layout.bind(minimum_height=layout.setter('height')) for item in labels_text: label = Label(text=item) label.size_hint = (1, None) label.height = "50dp" layout.add_widget(label) root = ScrollView(size_hint=(1, 1), size=(Window.width, Window.height)) root.add_widget(layout) root_layout.add_widget(root) root_layout.add_widget(Button(text="Zamknij okno", size_hint_y=0.1, on_release=lambda *args: parent.close_info())) self.popup = Popup(title=title, content=root_layout, size_hint=(0.9, 0.7))
class kar(Screen): def __init__(self): super(kar, self).__init__() self.name = 'all' self.kw = BoxLayout(orientation='vertical') self.k = BoxLayout() self.k1 = BoxLayout(padding=10, orientation='vertical', spacing=10) l = Label(text='[b]Hello, Welcome to Cezar 2020\b', color=[0, 0, 0, 1], markup=True) d = MDRaisedButton(text='login', size_hint=[1, 0.5], on_press=lambda x: self.reg(1)) d1 = MDRaisedButton(text='register', size_hint=[1, 0.5], on_press=lambda x: self.reg(2)) self.k1.add_widget(l) self.k1.add_widget(d) self.k1.add_widget(d1) self.k.bind(size=self._update1, pos=self._update1) with self.k.canvas.before: Color(rgb=(1, 1, 1)) self.rect = Rectangle( source='cezar.png', pos=[0, 0], size=[self.k.size[0] / 2, self.k.size[1] / 2]) self.kw.add_widget(self.k) self.kw.add_widget(self.k1) self.add_widget(self.kw) #return MDRaisedButton(text='datta',pos_hint={'center_x':0.5,'center_y':0.4},elevation_normal=2,size_hint=[1,0.1]) #return Button(text='datta',pos_hint={'center_x':0.5,'center_y':0.4}) def _update1(self, instance, value): self.rect.pos = instance.pos self.rect.size = instance.size def reg(self, i): if (i == 2): a = App.get_running_app() a.path_back.append('all') self.manager.current = 'rege' else: a = App.get_running_app() a.path_back.append('all') self.manager.current = 'logi'
class IssueList(Screen): def __init__(self, **kwargs): super().__init__(**kwargs) self.kc = KivyConfig() fcd = FiveCallsData() self.layout = BoxLayout( orientation='vertical', size_hint_y=None, ) self.layout.bind(minimum_height=self.layout.setter('height')) self.t = FCToolbar() self.t.back_label = '< Welcome' self.layout.add_widget(self.t) top_label = FCHeaderLabel(text='Top Issues') self.layout.add_widget(top_label) for i in fcd.active_issues: btn = FCIssueButton(issue=i) btn.bind(on_press=button_callback) self.layout.add_widget(btn) # for cat in fcd.categories: # cat_label = FCListLabel(text=cat, bold=True) # self.layout.add_widget(cat_label) # # issues = fcd.categories[cat] # # for i in issues: # if i.inactive: # btn = FCIssueButton(text=i.name, issue=i) # btn.bind(on_press=button_callback) # # self.layout.add_widget(btn) self.scrollview = ScrollView( do_scroll_x=False, ) self.scrollview.add_widget(self.layout) self.add_widget(self.scrollview)
def build(self): #Window.size = (300, 400) def update(instance): if self.lan == 'pl': t_ru.text = self.translator(text=t_pl.text, org_lan='pl', trans_lan='ru') t_en.text = self.translator(text=t_pl.text, org_lan='pl', trans_lan='en') elif self.lan == 'ru': t_pl.text = self.translator(text=t_ru.text, org_lan='ru', trans_lan='pl') t_en.text = self.translator(text=t_ru.text, org_lan='ru', trans_lan='en') elif self.lan == 'en': t_pl.text = self.translator(text=t_en.text, org_lan='en', trans_lan='pl') t_ru.text = self.translator(text=t_en.text, org_lan='en', trans_lan='ru') def update_lan(instance, value): coordinate_y = value.pos[1] height = Window.size[1] if coordinate_y > height*3/4 and coordinate_y <= height: self.lan = 'pl' elif coordinate_y > height/2 and coordinate_y <= height*3/4: self.lan = 'ru' elif coordinate_y > height/4 and coordinate_y <= height/2: self.lan = 'en' b = BoxLayout(orientation='vertical') translate_button = Button(text='Translate') t_pl = TextInput(text="jakiś tekst", font_size=self.f_size) t_ru = TextInput(text=self.translator(text=t_pl.text, org_lan='pl', trans_lan='ru'), font_size=self.f_size) t_en = TextInput(text=self.translator(text=t_pl.text, org_lan='pl', trans_lan='en'), font_size=self.f_size) b.bind(on_touch_down=update_lan) translate_button.bind(on_press=update) b.add_widget(t_pl) b.add_widget(t_ru) b.add_widget(t_en) b.add_widget(translate_button) return b
def _create_sub_popup(self, instance, loc): content = BoxLayout(orientation='vertical', spacing='5dp', size_hint_y=None, height=500) content.bind(minimum_height=content.setter('height')) self.popup = popup = ScrollablePopup() config = ConfigParser() config.read('mysteryonline.ini') fav_list = str(config.get('other', 'fav_subloc').strip('[]')) fav_list = fav_list.replace("'", "") fav_list = fav_list.split(',') fav_list = [x.strip() for x in fav_list] for option in sorted(self.options): state = 'down' if option in self.value and option in fav_list else 'normal' btn = ToggleButton(text=option, state=state, size_hint_y=None, height=50) self.buttons.append(btn) for subloc in loc.sublocations: if btn.text == loc.name + '_' + subloc: content.add_widget(btn) popup.scroll_lay.add_widget(content) box = BoxLayout(size_hint_y=None, height=dp(50), pos_hint={ 'y': 0, 'x': 0 }) popup.button_lay.add_widget(box) btn = Button(text='Done', size_hint_y=None, height=dp(50)) btn.bind(on_release=self._set_options) box.add_widget(btn) btn = Button(text='Cancel', size_hint_y=None, height=dp(50)) btn.bind(on_release=self._dismiss) box.add_widget(btn) popup.open()
def open(self, selection): path = "".join(selection) self.path_file = path arq_dic = open(path, 'rb') dic_lang_load = pickle.load(arq_dic) arq_dic.close() list_keys = dic_lang_load.keys() box_keys = BoxLayout(orientation='vertical') box_keys.size_hint_y = None box_keys.bind(minimum_height=box_keys.setter('height')) box_keys.id = 'box_keys' self.ids['box_keys'] = box_keys scroll = ScrollView() global i for key in list_keys: box_keys_trad = BoxLayout(size_hint_y=None, height=30) trad = dic_lang_load[key] tex_in_key = TextInput(text=str(key)) tex_in_key.multiline = False tex_in_key.id = 'text_key_' + str(self.i) self.ids['text_key_' + str(self.i)] = tex_in_key tex_in_trad = TextInput(text=str(trad)) tex_in_trad.multiline = False tex_in_trad.id = 'text_trad_' + str(self.i) self.ids['text_trad_' + str(self.i)] = tex_in_trad box_keys_trad.add_widget(tex_in_key) box_keys_trad.add_widget(tex_in_trad) box_keys.add_widget(box_keys_trad) self.i += 1 scroll.add_widget(box_keys) self.ids.screen_dic.add_widget(scroll)
class IssueView(Screen): def __init__(self, issue: Issue = None, **kwargs): super().__init__(**kwargs) self.issue = issue self.kc = KivyConfig() self.layout = BoxLayout( orientation='vertical', size_hint_y=None, ) self.layout.bind(minimum_height=self.layout.setter('height')) self.t = FCToolbar() self.t.back_label = '< Issues' self.layout.add_widget(self.t) hl = FCHeaderLabel(text=issue.name) hl.font_size = sp(30) self.layout.add_widget(hl) c_label = FCCategoryLabel() c_label.text = self.issue.categories[0]['name'].upper() self.layout.add_widget(c_label) # newline added to push 'calls' down a bit self.layout.add_widget(FCSectionLabelWithBorder(text="\nCalls")) for c in self.issue.contacts: c_button = FCContactButtonWithBorder(issue=self.issue, contact=c) c_button.bind(on_press=button_callback) self.layout.add_widget(c_button) self.layout.add_widget(FCSectionLabel(text="Background")) self.layout.add_widget(FCTextLabel(text=issue.reason)) self.scrollview = ScrollView( do_scroll_x=False, ) self.scrollview.add_widget(self.layout) self.add_widget(self.scrollview)
def __init__(self, title, labels_text, buttons=()): self.screen_names = ["workout", "meal", "water", "hunger", "home"] root_layout = BoxLayout(orientation="vertical") self.screen_manager = ScreenManager() """Home Popup Screen""" home_screen = Screen(name=self.screen_names[-1]) secondary_layout = BoxLayout(orientation="vertical") layout = BoxLayout(orientation="vertical", spacing=10, size_hint_y=None) layout.bind(minimum_height=layout.setter('height')) for item in labels_text: label = Label(text=item) label.size_hint = (1, None) label.height = 80 layout.add_widget(label) buttons = ("Wysiłek fizyczny", "Posiłek", "Woda", "Głód") button0 = Button(text=buttons[0], on_release=lambda *args: self.change_screen(self.screen_names[0])) button1 = Button(text=buttons[1], on_release=lambda *args: self.change_screen(self.screen_names[1])) button2 = Button(text=buttons[2], on_release=lambda *args: self.open_water_popup()) button3 = Button(text=buttons[3], on_release=lambda *args: self.hunger()) for button in [button0, button1, button2, button3]: button.size_hint_y = None button.height = "60dp" layout.add_widget(button) root = ScrollView(size_hint=(1, 1), size=(Window.width, Window.height)) root.add_widget(layout) secondary_layout.add_widget(root) home_screen.add_widget(secondary_layout) self.screen_manager.add_widget(home_screen) root_layout.add_widget(self.screen_manager) root_layout.add_widget(Button(text="Zamknij okno", size_hint_y=0.1, on_release=lambda *args: UserHub.close_info())) """Workout Screen""" workout_screen = Screen(name=self.screen_names[0]) workout_screen.add_widget(self.workout_screen_init()) self.screen_manager.add_widget(workout_screen) meal_screen = Screen(name=self.screen_names[1]) meal_screen.add_widget(MealScreen()) self.screen_manager.add_widget(meal_screen) self.popup = Popup(title=title, content=root_layout, size_hint=(0.9, 0.9))
class Run(Screen): def __init__(self, tarefas, **kwargs): super(Run, self).__init__(**kwargs) self.scroll_view = ScrollView() self.scroll_view.orientation = "vertical" self.box = BoxLayout() self.scroll_view.add_widget(self.box) self.box.orientation = "vertical" self.box.size_hint_y = None self.box.bind(minimum_height=self.box.setter("height")) for tarefa in tarefas: # self.box.add_widget(Button(text = tarefa, font_size = 30, size_hint_y = None, height = 200)) self.box.add_widget( ContactBox(tarefa, size_hint_y=None, width=402, height=80)) self.add_widget(self.scroll_view)
def build (self): parent = BoxLayout () def print_move (self, touch): print touch.x, ', ', touch.y parent.bind (on_touch_move=print_move) self.btnIndex = 1 self.c = CircularLayout () editlayout = BoxLayout (orientation='vertical', size_hint = (0.2, 1)) addwidgetbutton = Button (text='Add buttons') addwidgetbutton.bind (on_press=self.add_widget_action) rotateleftbutton = Button (text='Rotate Left') rotateleftbutton.bind (on_press=self.rotate_left_action) rotaterightbutton = Button (text='Rotate right') rotaterightbutton.bind (on_press=self.rotate_right_action) editlayout.add_widget (addwidgetbutton) editlayout.add_widget (rotateleftbutton) editlayout.add_widget (rotaterightbutton) parent.add_widget (self.c) parent.add_widget (editlayout) return parent
def __init__(self, **kwargs): super().__init__(**kwargs) self.force = {} self.add_widget(StaticBackground()) self._description = CoreMarkupLabel(text="[size=50][color=#FFFFFF]Earth Orbit Game[/color][/size]", markup=True, multiline=False) self._description.refresh() with self.canvas: w, h = self._description.texture.size self._text_label = Rectangle(texture=self._description.texture, pos=(40, Window.height - 2.5 * h), size=self._description.texture.size) self.bind(pos=self._update_rect, size=self._update_rect) grid = BoxLayout(orientation='vertical', spacing=10, size_hint=(0.2, 0.2), height=Window.height, pos_hint={'top': 0.35, 'center_x': 0.8}) grid.bind(height=grid.setter('top')) btn = Button(text="Start", background_color=(0, 1, 0, 1), font_size=40) btn.bind(on_release=self._on_start_clicked) grid.add_widget(btn) self.add_widget(grid)
class MyScrollView(ScrollView): def __init__(self, **kwargs): super(MyScrollView, self).__init__(**kwargs) self.layout = BoxLayout(orientation="vertical", pos_hint={ "center_x": 0.2, "center_y": 0.5 }, size_hint=(None, None), spacing=30, width=300) self.layout.bind(minimum_height=self.layout.setter("height")) self.add_widget(self.layout) def msg_layout(self, username, content): #MainLayout___________________________________________________ self.msglayout = BoxLayout(orientation="vertical", size_hint=(None, None), pos_hint={"center_x": 0.7}, spacing=5, width=300) self.msglayout.bind(minimum_height=self.msglayout.setter("height")) #UsernameLayout_______________________________________________ a = Label(text=username, size_hint_y=None, color=H("ff0000"), bold=True) a.bind(width=lambda s, w: s.setter("text_size")(s, (w, None))) a.bind(texture_size=a.setter("size")) self.msglayout.add_widget(a) #MessageContentLayout_________________________________________ l = Label(text=content, size_hint_y=None) l.bind(width=lambda s, w: s.setter("text_size")(s, (w, None))) l.bind(texture_size=l.setter("size")) self.msglayout.add_widget(l) self.layout.add_widget(self.msglayout)
def __init__(self, **kwargs): super(MenuScreen, self).__init__(**kwargs) self.name = 'screen_main' self.base_layout = FloatLayout() self.add_widget(self.base_layout) scroll = RecycleView(size=(400, 400), size_hint=(None, None), center=Window.center) scroll.background = (1, 1, 1) self.base_layout.add_widget(scroll) scroll_box = BoxLayout(orientation='vertical', spacing=2, padding=10, size_hint_y=None) scroll_box.bind(minimum_height=scroll_box.setter('height')) scroll.add_widget(scroll_box) self.load_data() for key, item in list(self.data.items()): l = Button(text=item['name'], size=(400, 30), size_hint=(1, None)) scroll_box.add_widget(l)
def make_layout(self): layout = BoxLayout(orientation="vertical") settingslayout = BoxLayout(orientation="horizontal") left_settings = BoxLayout(orientation="horizontal") settingslayout.add_widget(left_settings) on_off_layout = BoxLayout(orientation="vertical") self.on_off_layout = on_off_layout button_heating = Button(background_normal="pic/flame_off.png", background_down="pic/flame_pressed.png",allow_stretch=False, size_hint=(0.7, 1), border=[0,0,0,0]) button_heating.bind(on_press=self.on_button_heating) self.button_heating = button_heating button_pump = Button(background_normal="pic/pump_off.png", background_down="pic/pump_pressed.png",allow_stretch=False, size_hint=(0.7, 1), border=[0,0,0,0]) button_pump.bind(on_press=self.on_button_pump) self.button_pump = button_pump temperatur_panel = BoxLayout(orientation="vertical") oil_temp_label = Label(text = "0 Grad", color=[0,0,0,1], font_size = 30) self.oil_temp_label = oil_temp_label temperatur_panel.add_widget(oil_temp_label) water_temp_label = Label(text = "0 Grad", color=[0,0,0,1], font_size = 30) self.water_temp_label = water_temp_label temperatur_panel.add_widget(water_temp_label) time_label = Label(text = "0 min", color=[0,0,0,1], font_size = 30) self.time_label = time_label temperatur_panel.add_widget(time_label) heating_image = Image(source = 'pic/heating_off.png') self.heating_image = heating_image temperatur_panel.add_widget(heating_image) names_panel = BoxLayout(orientation="vertical") name_oil = Label(text = "Öl:", color=[0,0,0,1], font_size = 30) names_panel.add_widget(name_oil) name_water = Label(text = "Wasser:", color=[0,0,0,1], font_size = 30) names_panel.add_widget(name_water) name_time = Label(text = "Zeit:", color=[0,0,0,1], font_size = 30) names_panel.add_widget(name_time) name_heating = Label(text = "Heizen:", color=[0,0,0,1], font_size = 30) names_panel.add_widget(name_heating) set_value_panel = BoxLayout(orientation="vertical") set_value_oil_panel = BoxLayout(orientation="horizontal") set_value_water_panel = BoxLayout(orientation="horizontal") set_delta_heating_panel = BoxLayout(orientation="horizontal") set_delta_cooling_panel = BoxLayout(orientation="horizontal") set_value_panel.add_widget(set_value_oil_panel) set_value_panel.add_widget(set_value_water_panel) set_value_panel.add_widget(set_delta_heating_panel) set_value_panel.add_widget(set_delta_cooling_panel) set_oil_temp_slider = Slider(min = 0, max = 150, value = 50) self.set_oil_temp_slider = set_oil_temp_slider set_oil_temp_slider.bind(value=self.on_set_oil_temp_slider) set_value_oil_panel.add_widget(set_oil_temp_slider) set_oil_temp_label = Label(text = "50 °C", color=[0,0,0,1], font_size = 30, size_hint=(None,1)) self.set_oil_temp_label = set_oil_temp_label set_value_oil_panel.add_widget(set_oil_temp_label) set_water_temp_slider = Slider(min = 0, max = 50, value = 10) self.set_water_temp_slider = set_water_temp_slider set_water_temp_slider.bind(value=self.on_set_water_temp_slider) set_value_water_panel.add_widget(set_water_temp_slider) set_water_temp_label = Label(text = "10 °C", color=[0,0,0,1], font_size = 30, size_hint=(None,1)) self.set_water_temp_label = set_water_temp_label set_value_water_panel.add_widget(set_water_temp_label) name_delta_heating_label = Label(text = u"\u0394"+"Th", color=[0,0,0,1], font_size = 30, size_hint=(None,1)) set_delta_heating_panel.add_widget(name_delta_heating_label) set_delta_heating_slider = Slider(min = 0, max = 10, value = 5) self.set_delta_heating_slider = set_delta_heating_slider set_delta_heating_slider.bind(value=self.on_set_delta_heating_slider) set_delta_heating_panel.add_widget(set_delta_heating_slider) set_delta_heating_label = Label(text = "5 °C", color=[0,0,0,1], font_size = 30, size_hint=(None,1)) self.set_delta_heating_label = set_delta_heating_label set_delta_heating_panel.add_widget(set_delta_heating_label) name_delta_cooling_label = Label(text = u"\u0394"+"Tk", color=[0,0,0,1], font_size = 30, size_hint=(None,1)) set_delta_cooling_panel.add_widget(name_delta_cooling_label) set_delta_cooling_slider = Slider(min = 0, max = 10, value = 5) self.set_delta_cooling_slider = set_delta_cooling_slider set_delta_cooling_slider.bind(value=self.on_set_delta_cooling_slider) set_delta_cooling_panel.add_widget(set_delta_cooling_slider) set_delta_cooling_label = Label(text = "5 °C", color=[0,0,0,1], font_size = 30, size_hint=(None,1)) self.set_delta_cooling_label = set_delta_cooling_label set_delta_cooling_panel.add_widget(set_delta_cooling_label) left_settings.add_widget(on_off_layout) left_settings.add_widget(names_panel) left_settings.add_widget(temperatur_panel) settingslayout.add_widget(set_value_panel) on_off_layout.add_widget(button_heating) on_off_layout.add_widget(button_pump) layout.add_widget(settingslayout) with layout.canvas.before: Color(1, 1, 1, 1) layout.rect = Rectangle(size=layout.size, pos=layout.pos) layout.bind(pos=self.update_rect, size=self.update_rect) graph_theme = { 'label_options':{ 'color':rgb('444444'), # color of tick labels and titles 'bold':True}, 'background_color':rgb('ffffff'), # back ground color of canvas 'tick_color':rgb('808080'), # ticks and grid 'border_color':rgb('808080')} graph_oil = Graph( xlabel="Zeit [s]", ylabel="Öltemperatur [°C]", x_ticks_major=1, y_ticks_major=1, y_grid_label=True, x_grid_label=True, padding=5, xlog=False, ylog=False, x_grid=True, y_grid=True, xmin=0, xmax=10, **graph_theme) self.graph_oil = graph_oil graph_water = Graph( xlabel="Zeit [s]", ylabel="Wassertemperatur [°C]", x_ticks_major=1, y_ticks_major=10, y_grid_label=True, x_grid_label=True, padding=5, xlog=False, ylog=False, x_grid=True, y_grid=True, xmin=0, xmax=10, **graph_theme) self.graph_water = graph_water plot_oil = SmoothLinePlot(color=rgb('ff0000')) self.plot_oil = plot_oil plot_oil_set = SmoothLinePlot(color=rgb('00ff00')) self.plot_oil_set = plot_oil_set plot_water = SmoothLinePlot(color=rgb('0000ff')) self.plot_water = plot_water plot_water.points = [(x, x * x) for x in range(0, 11)] graph_oil.add_plot(plot_oil) graph_oil.add_plot(plot_oil_set) graph_water.add_plot(plot_water) layout.add_widget(graph_oil) layout.add_widget(graph_water) return layout
class LeafScreen(Screen): def on_pre_enter(self): self.clear_widgets() self.leafLayout = BoxLayout(orientation = 'vertical') self.readMode() #self.editMode() self.add_widget(self.leafLayout) self.win = Window self.win.bind(on_keyboard=self.keyboardHandler) self.leafLayout.bind( size=self._update_rect, pos=self._update_rect) with self.leafLayout.canvas.before: Color(0.5, 0.8, 1, 0.9) self.rect = Rectangle( size=self.leafLayout.size, pos=self.leafLayout.pos) def _update_rect(self, instance, value): self.rect.pos = instance.pos self.rect.size = instance.size def on_pre_leave(self): self.win.unbind(on_keyboard=self.keyboardHandler) def keyboardHandler(self, window, keycode1, keycode2, text, modifiers): if keycode1 == systemBtnBack: self.back() return True return False def readMode(self, *args): self.leafLayout.clear_widgets() # top btnBack = Button(text='Back', size_hint_x=0.1) capture = Label(text=tree.curItem().name, size_hint_x=0.8, color = color['lblPath']) btnEdit = Button(text='Edit', size_hint_x=0.1) topLayout = BoxLayout(size_hint_y = 0.1) topLayout.add_widget(btnBack) topLayout.add_widget(capture) topLayout.add_widget(btnEdit) self.leafLayout.add_widget(topLayout) btnBack.bind(on_press=self.back) # Content self.textField = TextInputForScroll( size_hint_y=None, text=tree.curItem().read(), background_color = color['readLeaf'], readonly = True, focus = True) self.textField.on_text() textFieldScroll = ScrollView( bar_width = 10) textFieldScroll.add_widget(self.textField) self.leafLayout.add_widget(textFieldScroll) btnEdit.bind(on_release=self.editMode) def editMode(self, *args): self.leafLayout.clear_widgets() # top btnBack = Button(text='Back', size_hint_x=0.1) capture = Label(text=tree.curItem().name, size_hint_x=0.8, color = color['lblPath']) btnSave = Button(text='Save', size_hint_x=0.1) topLayout = BoxLayout(size_hint_y = 0.1) topLayout.add_widget(btnBack) topLayout.add_widget(capture) topLayout.add_widget(btnSave) self.leafLayout.add_widget(topLayout) btnBack.bind(on_press=self.back) # Content self.textField = TextInput( text=tree.curItem().read(), background_color = color['editLeaf'], focus = True) self.leafLayout.add_widget(self.textField) btnSave.bind(on_release=self.readMode, on_press=self.save) def save(self, *args): tree.curItem().write(self.textField.text) def back(self, *args): if sm.current == "leafScreen" : self.save() if not tree.reachRoot(): tree.down() sm.transition = SlideTransition(direction='right') sm.current = 'mainScreen'
def build(self): self.sm = ScreenManager(transition=SlideTransition()) layout = BoxLayout(padding=20, orientation=self.orient, spacing=20) self.graphScreen = GraphScreen() self.console = Console(app=app) self.sm.switch_to(self.console) self.graph = self.graphScreen.getGraph(); layout.add_widget(self.sm) menuWrapper = BoxLayout() for i in range(0,3): #pragma mark boczne menu z lewej if(i==0): menuInside = BoxLayout(orientation="vertical") self.meuCenterWrapper = menuInside; self.buildLeftMenu(menuInside) menuWrapper.add_widget(menuInside) #srodkowa czesc if(i==1): scrollView = ScrollView(bar_margin=10, bar_color=[1,1,1,1]) #pragma mark padding narzucony w srodkowym menu menuInside = GridLayout(cols=4, row_default_height=40,size_hint_y=None,padding=[50,0,0,0]) menuInside.bind(minimum_height=menuInside.setter('height')) self.menuCenterWrapper = menuInside; self.buildCenterMenu(menuInside) scrollView.add_widget(menuInside) menuWrapper.add_widget(scrollView) #menu po prawej if(i==2): menuInside = BoxLayout(orientation="vertical") gridWrapper = GridLayout(cols=2) #liczba przedzialow s = Slider(min=0, max=10, value=5, step=1) s.value = 10 numberOfIntervalsBaseString = Constant("Liczba przedzialow:",1) textNumberOfIntervalsBaseString = "{0} {1}".format(numberOfIntervalsBaseString.value, s.value) l = Label(text=textNumberOfIntervalsBaseString, halign="center") gridWrapper.add_widget(l) s.bind(value=partial(self.sliderValueChanged,l,numberOfIntervalsBaseString)) gridWrapper.add_widget(s) #wartosc min delklaracja minSlider = Slider(min=0, max=100, value=5, step=1) #wartosc max deklaracja maxSlider = Slider(min=0, max=100, value=5, step=1) #wartosc min cd minSlider.value = 0 textMinBaseString = Constant("Wartosc min\nuzytkownika:",2) textMinString = "{0} {1}".format(textMinBaseString.value, minSlider.value) min = Label(text=textMinString, halign="center") gridWrapper.add_widget(min) minSlider.bind(value=partial(self.sliderValueChanged,min,textMinBaseString, maxSlider)) gridWrapper.add_widget(minSlider) #wartosc max cd maxSlider.value = 100 textMaxBaseString = Constant("Wartosc max\nuzytkownika:",3) textMaxString = "{0} {1}".format(textMaxBaseString.value, maxSlider.value) max = Label(text=textMaxString, halign="center") gridWrapper.add_widget(max) maxSlider.bind(value=partial(self.sliderValueChanged,max,textMaxBaseString, minSlider)) gridWrapper.add_widget(maxSlider) #skok dla przedzialu s = Slider(min=0, max=10, value=5, step=.1) s.value = 0 textJumpBaseString = Constant("Szerokosc przedzialu:",4) textJump = "{0} {1}".format(textJumpBaseString.value, s.value_normalized) j = Label(text=textJump, halign="left") s.bind(value=partial(self.sliderValueChanged,j,textJumpBaseString)) gridWrapper.add_widget(j) gridWrapper.add_widget(s) # Normalizacja zmiennych rzeczywistych ( (wartosc-srednia)/odchylenie_standardowe) b = Button(text="Normalizacja danych", on_press=self.buttonCallback) gridWrapper.add_widget(b) z = Button(text="Zamiana danych tekstowych\nna numeryczne", halign='center') gridWrapper.add_widget(z) menuInside.add_widget(gridWrapper); menuWrapper.add_widget(menuInside) layout.add_widget(menuWrapper) return layout
class SelecSitePath(BoxLayout): # Lang bt_add_site = lang['Add_Site'] bt_remove_site = lang['Remove_Site'] bt_automatically = lang['Automatically'] bt_help = lang['Help'] bt_next = lang['Next'] bt_cancel = lang['Cancel'] lb_select_the_sites = lang['Select_the_sites'] lb_site = lang['Site'] lb_equipment = lang['Equipment'] lb_path = lang['Path'] # Function next = ObjectProperty(None) cancel = ObjectProperty(None) list_sites = [] def __init__(self, **kwargs): super(SelecSitePath, self).__init__(**kwargs) self.box_lay_scroll = BoxLayout() self.box_lay_scroll.orientation = 'vertical' self.box_lay_scroll.size_hint_y = None self.box_lay_scroll.bind(minimum_height=self.box_lay_scroll.setter('height')) self.scroll_view = ScrollView() self.scroll_view.add_widget(self.box_lay_scroll) self.ids.lay_box_sites.add_widget(self.scroll_view) self.popup_new_site = Popup() self.popup_new_site.title = lang['New_Site'] self.popup_new_site.size_hint = None, None self.popup_new_site.size = 300, 160 self.popup_new_site.title_size = 16 self.popup_new_site.content = PopupNewSite(make_new_site=self.add_site) def open_pop_new_site(self): self.popup_new_site.open() def add_site(self, site): self.popup_new_site.dismiss() new_site = SiteBoxSelecTS() new_site.name = site new_site.open_popup_search_path = new_site.open_pop_search_path lis_check_equipments = [self.popup_new_site.content.ids.check_ADU06, self.popup_new_site.content.ids.check_ADU07, self.popup_new_site.content.ids.check_Lims] if lis_check_equipments[0].active == True: new_site.equipment = 'ADU06' elif lis_check_equipments[1].active == True: new_site.equipment = 'ADU07' elif lis_check_equipments[2].active == True: new_site.equipment = 'Lims' box_site = new_site.add_box_info() box_site.id = site self.ids[site] = box_site self.box_lay_scroll.add_widget(box_site) new_site.save_site(self.list_sites, new_site) key_check = True def remove_site(self): print(self.list_sites) self.ids.bt_remove_site.text = lang['Finish_Remove'] for site in self.list_sites: site.box_check_remove.width = 25 self.key_check_new = self.key_check self.key_check = False if self.key_check_new == self.key_check: self.finish_remove() self.key_check = True self.key_check_new = False def finish_remove(self): for site in self.list_sites: if site.check_remove.active == True: print(site.name) self.box_lay_scroll.remove_widget(self.ids[site.name]) self.list_sites.remove(site) for site in self.list_sites: site.box_check_remove.width = 0 for i in self.list_sites: print(i.name) self.ids.bt_remove_site.text = lang['Remove_Site'] def auto_fill(self): self.popup_auto_fill_site = Popup() self.window_popup_auto_fill_site = SelectAutoFillSites(open_search_path_all_site=self.open_pop_search_auto_fill_site) self.window_popup_auto_fill_site.cancel = self.cancel_pop_search_auto_fill_site self.window_popup_auto_fill_site.auto_fill = self.auto_fill_box_scroll self.popup_auto_fill_site.content = self.window_popup_auto_fill_site self.popup_auto_fill_site.size_hint = None, None self.popup_auto_fill_site.size= 450, 350 self.popup_auto_fill_site.title = lang['Automatic_Site_Selection'] self.popup_auto_fill_site.title_size = 17 self.popup_auto_fill_site.open() def cancel_pop_search_auto_fill_site(self): self.popup_auto_fill_site.dismiss() # Press ... in Auto Fill def open_pop_search_auto_fill_site(self): self.popup_search_path_auto_fill = Popup() self.window_pop_path_auto_fill = SelecSite() self.window_pop_path_auto_fill.cancel = self.cancel_pop_path_site_auto_fill_site self.window_pop_path_auto_fill.select = self.selec_path_site_auto_fill self.popup_search_path_auto_fill.title_size = 17 self.popup_search_path_auto_fill.title = lang['Select_Directory_with_all_Sites'] self.popup_search_path_auto_fill.content = self.window_pop_path_auto_fill self.popup_search_path_auto_fill.open() def cancel_pop_path_site_auto_fill_site(self): self.popup_search_path_auto_fill.dismiss() def selec_path_site_auto_fill(self, path_all_sites): print('select path') print(path_all_sites) self.window_popup_auto_fill_site.ids.tex_inp_path_all_sites.text = path_all_sites self.window_popup_auto_fill_site.ids.lb_path_all_site.text = os.path.basename(path_all_sites) + '/site/' self.popup_search_path_auto_fill.dismiss() # Press OK in Auto Fill def auto_fill_box_scroll(self): path_all_site = self.window_popup_auto_fill_site.ids.tex_inp_path_all_sites.text structure = self.window_popup_auto_fill_site.ids.tex_inp_structure_site.text lis_check_equipments = [self.window_popup_auto_fill_site.ids.check_ADU06, self.window_popup_auto_fill_site.ids.check_ADU07, self.window_popup_auto_fill_site.ids.check_Lims] if lis_check_equipments[0].active == True: equipment = 'ADU06' elif lis_check_equipments[2].active == True: equipment = 'Lims' elif lis_check_equipments[1].active == True: equipment = 'ADU07' list_path_site = glob.glob(path_all_site + '/*') list_path_site = sorted(list_path_site) for path_site in list_path_site: if os.path.isdir(path_site): new_site = SiteBoxSelecTS() new_site.name = os.path.basename(path_site) new_site.equipment = equipment new_site.path = path_site + '/' + structure box_site = new_site.add_box_info() new_site.tin_path.text = path_site + '/' + structure box_site.id = new_site.name self.ids[new_site.name] = box_site self.box_lay_scroll.add_widget(box_site) new_site.save_site(self.list_sites, new_site) self.popup_auto_fill_site.dismiss() def help(self): pass
class InfoForm(BoxLayout): def __init__(self, group, **kwargs): super(InfoForm, self).__init__(**kwargs) # You'll see these throughout. This calls the superclass' constructor for this kivy component. # self.set_up_act_bar() self.set_up_panes() self.members = {} self.empties = [] self.group = group # def set_up_act_bar(self): # self.add_widget(self.act_bar) def add_member(self, name): """Adds group member from display Args: name: Name of member. Used as key in GUI for layout refering to that member. """ if len(self.members) > 5: raise InternalError("More than 5 Party members in group") self.members[name] = StatEntry(name, 0, self.group) # Removing all dummy layouts to avoid newly added members # Having gaps between them for i in self.empties: self.player_pane.remove_widget(i) del self.empties[:] self.player_pane.add_widget(self.members[name]) # Adding empty dummy layouts back in under all real layouts for i in range(0, 5 - len(self.members)): self.add_empty() def remove_member(self, name): """Removes group member from display""" self.player_pane.remove_widget(self.members[name]) self.members.pop(name) self.add_empty() def add_empty(self): self.empties.append(Empty_Space()) self.player_pane.add_widget(self.empties[-1]) def set_up_panes(self): """Sets up left and right panes that display group members and <undecided> information, respectively""" self.player_pane = BoxLayout(orientation='vertical', size_hint=(.7, 1)) with self.player_pane.canvas.before: Color(0, 1, 0, 1) self.player_pane.rect = Rectangle(size=self.player_pane.size, pos=self.player_pane.pos) self.info_pane = BoxLayout(orientation='vertical', size_hint=(.3, 1)) with self.info_pane.canvas.before: Color(0, 1, 1, 1) self.info_pane.rect = Rectangle(size=self.info_pane.size, pos=self.info_pane.pos) self.add_widget(self.player_pane) self.add_widget(self.info_pane) self.player_pane.bind(pos=InfoForm.update_rect, size=InfoForm.update_rect) self.info_pane.bind(pos=InfoForm.update_rect, size=InfoForm.update_rect) def update_rect(instance, value): """Ensures background rectangles stay correct size""" instance.rect.pos = instance.pos instance.rect.size = instance.size def update_stats(self, grp): """recieves group data and updates GUI. Args: grp: Group() object contains various dictionaries with scraped data""" # iterate over key, value pair in group member dictionary for member in self.members: self.members[member].ids.stat_prog.ids.DPS_lab.text = str(grp.DPS(member)) self.members[member].ids.stat_prog.value = grp.percentage_damage(member)