def _greeting(dt): anchor = AnchorLayout(anchor_x='center', anchor_y='center', size=(Window.width, Window.height)) label = Label(text='TAP TO START', font_size='50dp', bold=True, font_name=FONT_NAME) anchor.add_widget(label) anchor.bind(on_touch_up=self.close_greeting) self.greeting_msg = anchor self.add_widget(self.greeting_msg)
class QrDialog(FloatLayout): def __init__(self, rfid, **kwargs): super(QrDialog, self).__init__(**kwargs) self.layout = AnchorLayout(anchor_x='center', anchor_y='center', size_hint=(1,1)) self.layout.bind(pos=self.update_layout) self.layout.bind(size=self.update_layout) qr_image = Image( size_hint=(0.9, 0.9), allow_stretch = True, nocache=True, source="storage_data/"+rfid+"/qr_code.png" ) self.layout.add_widget(qr_image) self.add_widget(self.layout) def update_layout(self, *args): self.layout.pos = self.pos self.layout.size = self.size
def screen_make(self, manager, kivy_obj, name: str): '''add an object to the given manager with name''' screen = Screen(name=name) layout = AnchorLayout(anchor_y='top') layout.add_widget(kivy_obj) screen.add_widget(layout) manager.add_widget(screen) from kivy.graphics import Color, Rectangle def update_rect(instance, value): instance.rect.pos = instance.pos instance.rect.size = instance.size with layout.canvas.before: Color(0, 1, 0, 1) # green; colors range from 0-1 instead of 0-255 layout.rect = Rectangle(size=layout.size, pos=layout.pos) # listen to size and position changes # layout.size_hint = (None, None) layout.bind(pos=update_rect, size=update_rect) return screen
class VictoryScreen(Screen): minutes = int() seconds = int() order = '' leaderboard_button_visible = True def __init__(self, theme, **kwargs): super(VictoryScreen, self).__init__(**kwargs) self.theme = theme self.name_adder = NameAdder(theme=theme) self.root = AnchorLayout(anchor_x='center', anchor_y='center') # make a green line on the ground (to have some style on the winners page ;)) with self.root.canvas: self.color = Color(0, 255, 0, 1) self.line = Line(points=[50, 50, Window.width - 50, 50]) self.root.bind(pos=self.redraw, size=self.redraw) self.anchor = AnchorLayout(anchor_x='center', anchor_y='center') self.box = BoxLayout(orientation='vertical', size_hint=[1, None], size=[10, 210]) self.box.bind(minimum_size=self.box.setter('size')) self.paused_label = Label(text='Victory', font_size='50sp', font_name='gothic', color=theme.get_secondary(), halign='center', valign='bottom', padding_y=10, size_hint=[1, None], size=[150, 60]) self.paused_label.bind(size=self.paused_label.setter('text_size')) self.box.add_widget(self.paused_label) self.info = Label(text='dummy', font_size='25sp', font_name='gothic', color=theme.get_secondary(), halign='center', valign='bottom', padding_y=15, size_hint=[1, None], size=[150, 40]) self.info.bind(size=self.info.setter('text_size')) self.box.add_widget(self.info) # the button to go to the menu screen quit_layout = AnchorLayout(anchor_x='center', anchor_y='top', size_hint=[1, None], size=[15, 65]) self.quit_button = Button( text='Back to menu', size_hint=[None, None], size=[150, 50], font_name='gothic', font_size='16sp', color=[0.9, 0.9, 0.9, 1], padding_y=50, background_normal= f'C:/Users/Nutzer/PycharmProjects/Minesweeper/assets/img/buttons/button_normal_{theme.current}.png', background_down= f'C:/Users/Nutzer/PycharmProjects/Minesweeper/assets/img/buttons/button_pressed_{theme.current}.png', on_release=lambda n: self.change_to_menu()) quit_layout.add_widget(self.quit_button) self.box.add_widget(quit_layout) # the add button for the leaderboard self.to_leaderboard_layout = AnchorLayout(anchor_x='center', anchor_y='bottom', size_hint=[1, None], size=[15, 70]) self.to_leaderboard_button = NameAdderButton(theme, self.box) # add the bindings of the submit button (translate the data to the leaderboard) self.to_leaderboard_button.name_adder.submit.on_release = lambda: self.add_to_leaderboard( name=self.to_leaderboard_button.name_adder.input.text, minutes=self.minutes, seconds=self.seconds, order=self.order) self.to_leaderboard_layout.add_widget(self.to_leaderboard_button) self.box.add_widget(self.to_leaderboard_layout) self.anchor.add_widget(self.box) self.root.add_widget(self.anchor) self.add_widget(self.root) def add_leaderboard_button(self): if not self.leaderboard_button_visible: self.to_leaderboard_layout.add_widget(self.to_leaderboard_button) self.leaderboard_button_visible = True def remove_leaderboard_button(self): if self.leaderboard_button_visible: self.to_leaderboard_layout.remove_widget( self.to_leaderboard_button) # remove also the the name adder field self.to_leaderboard_button.reset_button() self.leaderboard_button_visible = False def add_to_leaderboard(self, name, minutes, seconds, order): if not name == '': print('Leaderboard entry: ', name, minutes, seconds, order) self.manager.get_screen('leaderboard_screen').entries.append( [name, minutes, seconds, order]) self.manager.get_screen('leaderboard_screen').update_list() self.change_to_leaderboard() def change_to_menu(self): # reset the leaderboard button self.to_leaderboard_button.reset_button() self.manager.get_screen('game_screen').reset_game() self.manager.current = 'menu_screen' def change_to_leaderboard(self): # reset the leaderboard button self.to_leaderboard_button.reset_button() self.manager.get_screen('game_screen').reset_game() self.manager.current = 'leaderboard_screen' def redraw(self, *args): self.line.points = [50, 50, Window.width - 50, 50] def apply_theme(self, theme): self.paused_label.color = theme.get_secondary() self.info.color = theme.get_secondary_accent() self.to_leaderboard_button.name_adder.apply_theme(theme) # recolor the button self.quit_button.background_normal = f'C:/Users/Nutzer/PycharmProjects/Minesweeper/assets/img/buttons/button_normal_{theme.current}.png' self.quit_button.background_down = f'C:/Users/Nutzer/PycharmProjects/Minesweeper/assets/img/buttons/button_pressed_{theme.current}.png' self.to_leaderboard_button.background_down = f'C:/Users/Nutzer/PycharmProjects/Minesweeper/assets/img/buttons/button_pressed_{theme.current}.png' self.to_leaderboard_button.background_normal = f'C:/Users/Nutzer/PycharmProjects/Minesweeper/assets/img/buttons/button_normal_{theme.current}.png'