def get_recent(self, dt=0): logs = self.client.calls.list() for log in logs: self.ids.time.text = str(log.start_time) dc = log.date_created.strftime("%d:%m:%y") tm = log.end_time.strftime("%H:%M:%S") recent = TwoLineIconListItem( text=f" [font=RobotoLight]{log.to}[/font]", text_color=[0, 0, 0, 1], secondary_text= f" {log.duration}sec {dc} {tm}", secondary_text_color=[0, 1, 0, 1], bg_color=[1, 1, 1, 1], divider='Inset') im = IconLeftWidget(icon='account') recent.add_widget(im) recent.size_hint_max_y = 2 self.ids.recent.add_widget(recent)
def __init__(self, **kwargs): super().__init__(**kwargs) self.register_event_type("on_open") self.register_event_type("on_close") if self.panel_cls and isinstance( self.panel_cls, ( MDExpansionPanelOneLine, MDExpansionPanelTwoLine, MDExpansionPanelThreeLine, ), ): self.panel_cls.pos_hint = {"top": 1} self.panel_cls._no_ripple_effect = True self.panel_cls.bind( on_release=lambda x: self.check_open_panel(self.panel_cls) ) self.chevron = MDExpansionChevronRight() self.panel_cls.add_widget(self.chevron) if self.icon: if self.icon in md_icons.keys(): self.panel_cls.add_widget( IconLeftWidget( icon=self.icon, pos_hint={"center_y": 0.5} ) ) else: self.panel_cls.add_widget( ImageLeftWidget( source=self.icon, pos_hint={"center_y": 0.5} ) ) else: # if no icon self.panel_cls._txt_left_pad = m_res.HORIZ_MARGINS self.add_widget(self.panel_cls) else: raise ValueError( "KivyMD: `panel_cls` object must be must be one of the " "objects from the list\n" "[MDExpansionPanelOneLine, MDExpansionPanelTwoLine, " "MDExpansionPanelThreeLine]" )
def load_list(self): c.execute("SELECT * FROM timer ORDER BY number DESC LIMIT 1 ") for i in c: self.load_name = i[0] self.load_hours = i[1] self.load_minutes = i[2] self.load_seconds = i[3] + self.load_minutes*60 self.Limit_for = True for i in range(8): if self.Limit_for == True: self.listit.append(self.lists) self.help.ids.leep.add_widget(self.lists) image = IconLeftWidget(icon="plus") imageright = IconRightWidget(icon="minus") self.lists.add_widget(image) self.lists.add_widget(imageright) imageright.bind(on_press=lambda x: self.delete_row((imageright.parent.parent))) self.Limit_for = False self.help.ids.frij.text = ""
def load_activity_page(self): ContentNavigationDrawer.populateNavDrawerValues(self) self.ids['actscroll'].clear_widgets() query = f'''SELECT ACTIVITY_ID, ORG_ID, NAME, LOCATION, DISASTER, TARGET_AMT FROM ACTIVITY WHERE ORG_ID = {globalvariables.var_org_id} AND STATUS='Y' ''' # run direct SQL print(globalvariables.var_org_id) stmt = ibm_db.exec_immediate(connection.conn, query) actlist = ibm_db.fetch_both(stmt) item = TwoLineIconListItem() while (actlist): icon = IconLeftWidget(icon="bank") item = TwoLineIconListItem(text=str(actlist[2]), secondary_text=str(actlist[3])) item.add_widget(icon) item.bind(on_release=self.row_press) self.ids['actscroll'].add_widget(item) actlist = ibm_db.fetch_both( stmt) #for incrementing rows inside while loop
def start_load_list(self): c.execute("SELECT * FROM timer ORDER BY number ASC") d = c.fetchall() for t in d: u = 0 self.bar = MDProgressBar(id="counter", max=t[3], value=t[3], size_hint=(0.7, 0), pos_hint={ "center_x": 0.5, "center_y": 0.3 }) lists = ProgressList(text=t[0], secondary_text=str(t[2]) + ":" + str(t[3]), tertiary_text=" ", bar=self.bar) self.help.ids.leep.add_widget(lists) image = IconLeftWidget(icon="plus") self.listitdown.append(lists) lists.add_widget(image) u += 1
def add_songs(self): url = 'https://spotifycharts.com/regional/in/daily/latest/download' with closing(requests.get(url, stream=True)) as r: f = (line.decode('utf-8') for line in r.iter_lines()) reader = csv.reader(f, delimiter=',', quotechar='"') for row in reader: try: pos = int(row[0]) song_name = row[1] art_name = row[2] lst = TwoLineAvatarListItem( text="{}. {}".format(pos, song_name), secondary_text=art_name, on_press=lambda x, y=song_name: self.select_spotify(y)) lst.add_widget(IconLeftWidget(icon='music-note-outline')) self.top_list.add_widget(lst) except: continue try: self.dia.dismiss() except: pass
def __init__(self, **kwargs): super().__init__(**kwargs) des_n_loc = MainMenuScreen() print(des_n_loc.show_data()) description = des_n_loc.show_data()[0] location = des_n_loc.show_data()[1] json_data = f'https://jobs.github.com/positions.json?description={description}&location={location}' print(json_data) response = requests.get(url=json_data) response.raise_for_status() data = response.json() md_list = MDList() scroll = ScrollView() scroll.add_widget(md_list) for i in range(0, len(data)): company_logo = data[i]['company_logo'] company = data[i]['company'] title = data[i]['title'] location = data[i]['location'] icon_left_widget = IconLeftWidget(icon=f'language-{description}') list_item = ThreeLineAvatarListItem( text=company, secondary_text=title, tertiary_text=location, ) list_item.add_widget(icon_left_widget) md_list.add_widget(list_item) self.add_widget(scroll)
def build(self): screen = Screen() # Creating a Simple List scroll = ScrollView() list_view = MDList() for i in range(20): # items = ThreeLineListItem(text=str(i) + ' item', # secondary_text='This is ' + str(i) + 'th item', # tertiary_text='hello') icons = IconLeftWidget(icon="android") items = OneLineIconListItem(text=str(i) + ' item') items.add_widget(icons) list_view.add_widget(items) scroll.add_widget(list_view) # End List screen.add_widget(scroll) return screen
def down_button(self, country, *args): try: self.clear_screen() except: pass self.phone_number_screen_manager.current = 'phone_number_list' numbers = self.pickle_list()[3][country] if len(numbers) == self.NORMAL: names = self.pickle_list()[0] self.container = SecondScreen() self.phone_container.add_widget(self.container) for i in range(self.NORMAL): self.container.add_widget( MDExpansionPanel( icon=f'images/emergency/{names[i]}.png', content=PhoneContent(numbers[i]), panel_cls=MDExpansionPanelOneLine(text=names[i]))) elif len(numbers) == self.EXTENDED: names = self.pickle_list()[1] self.container = SecondScreen() self.phone_container.add_widget(self.container) self.prov_item = OneLineAvatarIconListItem( text='Numery ws. koronawirusa w Województwach', on_release=self.clear_add_provinces) prov_item_icon_left = IconLeftWidget( icon='images/emergency/mask.png', size_hint=(0.9, 0.9)) prov_item_icon_right = IconRightWidget(icon='arrow-right') self.phone_list_container.add_widget(self.prov_item) self.prov_item.add_widget(prov_item_icon_left) self.prov_item.add_widget(prov_item_icon_right) for i in range(self.EXTENDED): self.container.add_widget( MDExpansionPanel( icon=f'images/emergency/{names[i]}.png', content=PhoneContent(numbers[i]), panel_cls=MDExpansionPanelOneLine(text=names[i])))
def sendreq(self, key): lst = [str(x) for x in range(12)] for a in lst: if str(a) in key: i = int(a) icon = IconLeftWidget(icon='check-circle', ) if key == 'list1' and self.n1 == 0: data = {'sent_requests': f'{self.keys_all[i-1]}'} db.child("Users").child(f"{EmailID}").child('Friends').child( f'f{self.FNumber}').set(data) self.FNumber += 1 self.ids.list1.add_widget(icon) Snackbar(text='Request Sent', padding='80dp').show() self.n1 += 1 else: Snackbar(text='Request Already Sent!', padding='80dp').show() if key == 'list2' and self.n2 == 0: self.ids.list2.add_widget(icon) data = {'sent_requests': f'{self.keys_all[i-1]}'} db.child("Users").child(f"{EmailID}").child('Friends').child( f'f{self.FNumber}').set(data) self.FNumber += 1 Snackbar(text='Request Sent', padding='80dp').show() self.n2 += 1 else: Snackbar(text='Request Already Sent!', padding='80dp') if key == 'list3' and self.n3 == 0: data = {'sent_requests': f'{self.keys_all[i-1]}'} db.child("Users").child(f"{EmailID}").child('Friends').child( f'f{self.FNumber}').set(data) self.FNumber += 1 self.ids.list3.add_widget(icon) Snackbar(text='Request Sent', padding='80dp').show() self.n3 += 1 else: Snackbar(text='Request Already Sent!', padding='80dp')
def new_message_private(self, name, message): new_message = TwoLineAvatarIconListItem(text=name, secondary_text=message) new_message.add_widget(IconLeftWidget(icon="message-outline")) self.chatscreen.ids.privatelist.add_widget(new_message)
def build(self): app = MDApp.get_running_app() app.theme_cls = ThemeManager() app.theme_cls.primary_palette = "DeepPurple" app.theme_cls.accent_palette = "DeepPurple" app.theme_cls.theme_style = "Light" Window.borderless = False self.title = "Super Chat" Config.set('kivy', 'window_title', 'Super Chat') self.root_sm = ScreenManager() rscreen = Screen(name="Root") self.nav_layout = NavigationLayout() self.nl_sm = ScreenManager() nl_screen = Screen(name="nl") self.toolbar = MDToolbar(pos_hint={'top': 1}, elevation=9, title=chat_app.title, md_bg_color=chat_app.theme_cls.primary_color) self.toolbar.left_action_items = [ ["menu", lambda x: self.nav_drawer.toggle_nav_drawer()]] nl_screen.add_widget(self.toolbar) self.screen_manager = ScreenManager() self.connect_page = ConnectPage() screen = Screen(name="Connect") screen.add_widget(self.connect_page) self.screen_manager.add_widget(screen) self.info_page = InfoPage() screen = Screen(name="Info") screen.add_widget(self.info_page) self.screen_manager.add_widget(screen) nl_screen.add_widget(self.screen_manager) self.nl_sm.add_widget(nl_screen) self.nav_drawer = MDNavigationDrawer(elevation=0) self.ndbox = BoxLayout(orientation="vertical", spacing="8dp") self.avatar = Image(id="avatar", size_hint=(None, None), size=( Window.size[0]*0.65, Window.size[0]*0.55), source="icon.png") self.anchor = AnchorLayout( anchor_x="center", size_hint_y=None, height=self.avatar.height*1.3) self.anchor.add_widget(MDLabel()) self.anchor.add_widget(self.avatar) self.ndbox.add_widget(self.anchor) self.fl = FloatLayout() self.fl.padding = 8 self.sub_nav = OneLineAvatarIconListItem(text="Settings", theme_text_color="Primary", pos_hint={ 'center_x': 0.5, 'center_y': 1}, font_style="Button") self.iconitem = IconLeftWidget(icon="settings", pos_hint={ 'center_x': 1, 'center_y': 0.55}) self.sub_nav.add_widget(self.iconitem) self.fl.add_widget(self.sub_nav) self.settings_btn = OneLineAvatarIconListItem( text="Dark Mode", on_press=self.theme_change,on_release=lambda x: self.nav_drawer.toggle_nav_drawer(), pos_hint={'center_x': 0.5, 'center_y': 0.86}) self.iconitem = IconLeftWidget( icon="theme-light-dark", pos_hint={'center_x': 1, 'center_y': 0.55}) self.settings_btn.add_widget(self.iconitem) self.fl.add_widget(self.settings_btn) self.ndbox.add_widget(self.fl) self.toolbar = MDToolbar( elevation=8, title=chat_app.title, md_bg_color=chat_app.theme_cls.primary_color) self.toolbar.left_action_items = [ ["close", sys.exit]] self.ndbox.add_widget(self.toolbar) self.nav_drawer.add_widget(self.ndbox) self.nav_layout.add_widget(self.nl_sm) self.nav_layout.add_widget(self.nav_drawer) rscreen.add_widget(self.nav_layout) self.root_sm.add_widget(rscreen) return self.root_sm
def pressed(self, instance): top3_rank = final_combiner.final_rank([ int(self.left.two.input1.text), int(self.left.two.input3.text), int(self.left.two.input5.text) ], self.spinner.text) print("實際的前三名:", end="") print(top3_rank) if not self.acard: self.rank1 = ThreeLineIconListItem( text=top3_rank[0][0].split('區')[1], secondary_text='人口特性:' + str(top3_rank[0][1]), tertiary_text='新資所得:' + str(top3_rank[0][2]), text_color=[1, 1, 1, 1]) self.rank1.add_widget(IconLeftWidget(icon='numeric-1-box')) self.rank1.bg_color = [0, 0, 0, 0] self.rank1.children[1].children[2].font_name = 'msjhbd.ttc' self.rank1.children[1].children[1].font_name = 'msjhbd.ttc' self.rank1.children[1].children[0].font_name = 'msjhbd.ttc' self.rank1.children[1].children[2].font_size = '18' more_rank1 = MDLabel(text='人口消長:' + str(top3_rank[0][3])) more_rank1.font_name = 'msjhbd.ttc' more_rank1.font_style = 'Body1' more_rank1.font_size = 16 more_rank1.color = [0, 0, 0, 0.7] self.rank1.children[1].add_widget(more_rank1) self.rank1.children[1].size_hint = [1, None] self.rank1.children[1].children[3].pos = [56, 280] self.rank1.children[0].children[0].children[0].color = [1, 1, 1, 1] self.rank1.children[0].children[0].children[0].pos_hint = { 'left': 0.1 } self.rank1.children[0].padding = [-10, 0, 0, 0] self.rank1.children[1].children[3].theme_text_color = 'Custom' self.rank1.children[1].children[3].text_color = [1, 1, 1, 1] self.rank1.children[1].children[2].theme_text_color = 'Custom' self.rank1.children[1].children[2].text_color = [1, 1, 1, 1] self.rank1.children[1].children[1].theme_text_color = 'Custom' self.rank1.children[1].children[1].text_color = [1, 1, 1, 1] self.rank1.children[1].children[0].theme_text_color = 'Custom' self.rank1.children[1].children[0].text_color = [1, 1, 1, 1] self.rank1.children[1].height = 110 # 從另一個預先寫好、計算各里指標分數的模組final_combiner引進final_rank函數,取得前三名的區域及其各項指標分數後用top3_rank變數紀錄起來 # 接著改寫、擴充kivy套件內的工具(ThreeLineIconListItem),做成資訊卡,同時使其擁有按鈕的特性讓使用者做點選 self.rank2 = ThreeLineIconListItem( text=top3_rank[1][0].split('區')[1], secondary_text='人口特性:' + str(top3_rank[1][1]), tertiary_text='新資所得:' + str(top3_rank[1][2])) self.rank2.add_widget(IconLeftWidget(icon='numeric-2-box')) self.rank2.bg_color = [0, 0, 0, 0] self.rank2.children[1].children[2].font_size = '18' self.rank2.children[1].children[2].font_name = 'msjhbd.ttc' self.rank2.children[1].children[1].font_name = 'msjhbd.ttc' self.rank2.children[1].children[0].font_name = 'msjhbd.ttc' more_rank2 = MDLabel(text='人口消長:' + str(top3_rank[1][3])) more_rank2.font_name = 'msjhbd.ttc' more_rank2.font_style = 'Body1' more_rank2.font_size = 16 more_rank2.color = [0, 0, 0, 0.54] self.rank2.children[1].add_widget(more_rank2) self.rank2.children[1].size_hint = [1, None] self.rank2.children[0].children[0].children[0].color = [1, 1, 1, 1] self.rank2.children[0].children[0].children[0].pos_hint = { 'left': 0.1 } self.rank2.children[0].padding = [-10, 0, 0, 0] self.rank2.children[1].children[3].theme_text_color = 'Custom' self.rank2.children[1].children[3].text_color = [1, 1, 1, 1] self.rank2.children[1].children[2].theme_text_color = 'Custom' self.rank2.children[1].children[2].text_color = [1, 1, 1, 1] self.rank2.children[1].children[1].theme_text_color = 'Custom' self.rank2.children[1].children[1].text_color = [1, 1, 1, 1] self.rank2.children[1].children[0].theme_text_color = 'Custom' self.rank2.children[1].children[0].text_color = [1, 1, 1, 1] self.rank3 = ThreeLineIconListItem( text=top3_rank[2][0].split('區')[1], secondary_text='人口特性:' + str(top3_rank[2][1]), tertiary_text='新資所得:' + str(top3_rank[2][2])) self.rank3.add_widget(IconLeftWidget(icon='numeric-3-box')) self.rank3.bg_color = [0, 0, 0, 0] self.rank3.children[1].children[2].font_size = '18' self.rank3.children[1].children[2].font_name = 'msjhbd.ttc' self.rank3.children[1].children[1].font_name = 'msjhbd.ttc' self.rank3.children[1].children[0].font_name = 'msjhbd.ttc' more_rank3 = MDLabel(text='人口消長:' + str(top3_rank[2][3])) more_rank3.font_name = 'msjhbd.ttc' more_rank3.font_style = 'Body1' more_rank3.font_size = 16 more_rank3.color = [0, 0, 0, 0.54] self.rank3.children[1].add_widget(more_rank3) self.rank3.children[1].size_hint = [1, None] self.rank3.children[0].children[0].children[0].color = [1, 1, 1, 1] self.rank3.children[0].children[0].children[0].pos_hint = { 'left': 0.1 } self.rank3.children[0].padding = [-10, 0, 0, 0] self.rank3.children[1].children[3].theme_text_color = 'Custom' self.rank3.children[1].children[3].text_color = [1, 1, 1, 1] self.rank3.children[1].children[2].theme_text_color = 'Custom' self.rank3.children[1].children[2].text_color = [1, 1, 1, 1] self.rank3.children[1].children[1].theme_text_color = 'Custom' self.rank3.children[1].children[1].text_color = [1, 1, 1, 1] self.rank3.children[1].children[0].theme_text_color = 'Custom' self.rank3.children[1].children[0].text_color = [1, 1, 1, 1] self.rank1.size = [352, 100] self.rank2.size = [352, 100] self.rank3.size = [352, 100] self.click += 1 self.rank1.children[1].padding = [56, 16, 24, 7] self.rank2.children[1].padding = [56, 4, 24, 7] self.rank3.children[1].padding = [56, 4, 24, 7] self.rank1.children[1].children[0].adaptive_height = True self.rank1.children[1].pos = [0, 180] self.rank2.children[1].children[1].adaptive_height = True self.rank2.children[1].pos = [0, 130] self.rank3.children[1].children[1].adaptive_height = True self.lll = ScatterLayout(size_hint=[0.2, 0.6]) self.myLast = MDGridLayout(cols=1, size_hint=[0.8, 0.85], md_bg_color=[0.39, 0.4, 0.8, 0.8]) self.myLast.add_widget(self.rank1) # 0.285,0.5 self.myLast.add_widget(self.rank2) self.myLast.add_widget(self.rank3) self.lll.add_widget(self.myLast) from kivy.core.window import Window Window.add_widget(self.lll) self.lll.center = (640, 328) self.rank1.bind(on_release=self.add_renk1_marker) self.rank2.bind(on_release=self.add_renk2_marker) self.rank3.bind(on_release=self.add_renk3_marker) lat = 0 lon = 0 try: with open(os.path.realpath(sys.argv[0]).strip(sys.argv[0]) + 'district.json', 'r', encoding='utf-8') as q: q = json.load(q) lat = q["臺中市" + self.spinner.text][0][0] lon = q["臺中市" + self.spinner.text][0][1] except: print(self.spinner.text + "經緯度有問題") self.map.zoom = 12 self.map.center_on(float(lat), float(lon))
def refresh_data(self): print("data", self.data) self.now = datetime.now() tz = pytz.timezone("Etc/GMT+4") tz.localize(self.now) self.check_expired_alerts() hierarchy = [] weekday = self.now.weekday() old_weekday = self.now.weekday() hour = self.now.hour today = False if hour < 14: today = True for i in range(6): if not today: i += 1 i += weekday if i == 6: i = 0 elif i > 6: i -= 6 for j in SCHEDULE[i]: if j not in hierarchy: hierarchy.append(j) self.algoritmus_data = {} self.algoritmus_header = "" for i in hierarchy: for j in self.data: if j.startswith(i): self.algoritmus_data[j] = self.data[j] self.algoritmus_header = i if self.algoritmus_data: break self.main_widget.ids.rasp_list.clear_widgets() today_list_item = ThreeLineIconListItem() today_list_item.text = "Сегодня ({})".format(DAYOFWEEK_DICT[weekday]) today_list_item.secondary_text = ", ".join( SCHEDULE.get(weekday, DEFAULT_SCHED)) self.main_widget.ids.rasp_list.add_widget(today_list_item) self.algoritmus_nextday = "На потом" if weekday in (5, 6): weekday = -1 weekday += 1 if self.algoritmus_header in SCHEDULE.get(weekday, []): self.algoritmus_nextday = "На завтра" if self.algoritmus_header in SCHEDULE.get(old_weekday, []) and today: self.algoritmus_nextday = "СДЕЛАТЬ СЕГОДНЯ!" today_list_item = ThreeLineIconListItem() today_list_item.text = "Завтра ({})".format(DAYOFWEEK_DICT[weekday]) today_list_item.secondary_text = ", ".join( SCHEDULE.get(weekday, DEFAULT_SCHED)) self.main_widget.ids.rasp_list.add_widget(today_list_item) if self.data: self.main_widget.ids.algoritmuscard.set_data( self.algoritmus_data, self.algoritmus_header, self.algoritmus_nextday) else: self.main_widget.ids.algoritmuscard.set_data( { "Действия": "Попробуй обновить данные. Если ничего не поменялось, отдыхай))" }, "Наверное, ты всё сделал", False, "База данных пуста :(") self.tasks_data = {} self.main_widget.ids.alerts_list.clear_widgets() if alerts['unreaded']: item = OneLineIconListItem() item.text = "Новые" item.add_widget(IconLeftWidget(icon="newspaper-plus")) self.main_widget.ids.alerts_list.add_widget(item) for i in alerts["unreaded"]: self.main_widget.ids.alerts_list.add_widget( ThreeLineListItem(text=i[0])) if alerts['readed']: item = OneLineIconListItem() item.text = "Прочитанные" item.add_widget(IconLeftWidget(icon="newspaper")) self.main_widget.ids.alerts_list.add_widget(item) for i in alerts["readed"]: self.main_widget.ids.alerts_list.add_widget( ThreeLineListItem(text=i[0])) for i in hierarchy: self.tasks_data[i] = {} for j in self.data: if j.startswith(i): self.tasks_data[i][j] = self.data[j] if self.tasks_data[i] == {}: self.tasks_data[i] = { "Не найдено записей в базе данных": "Обновите базу данных. Если так и остаётся, значит, всё сделано!" } self.main_widget.ids.tasks_layout.clear_widgets() for i in self.tasks_data: item = ItemCard() nextday = "На потом" if i in SCHEDULE[weekday]: nextday = "На завтра" if today and i in SCHEDULE[old_weekday]: nextday = "СДЕЛАТЬ СЕГОДНЯ!!" item.set_data(self.tasks_data[i], i, nextday, from_tasks=True) self.main_widget.ids.tasks_layout.add_widget(item) self.update_db() self.refresh_alerts_navdrawer()
def __init__(self, **kw): super().__init__() self.text = kw["text"] self.icon = IconLeftWidget(icon=kw["icon"]) self.add_widget(self.icon) self.on_release = kw["on_release"]
def pressed(self, instance): print(self.spinner.text) #print(self.spinner.text) top3_rank = final_combiner.final_rank([ int(self.left.two.input1.text), int(self.left.two.input3.text), int(self.left.two.input5.text) ]) if not self.acard: self.rank1 = ThreeLineIconListItem( text=top3_rank[0][0], secondary_text='人口特性:' + str(top3_rank[0][1]), tertiary_text='新資所得:' + str(top3_rank[0][2]), text_color=[1, 1, 1, 1]) self.rank1.add_widget(IconLeftWidget(icon='numeric-1-box')) self.rank1.bg_color = [0, 0, 0, 0] self.rank1.children[1].children[2].font_name = 'msjhbd.ttc' self.rank1.children[1].children[1].font_name = 'msjhbd.ttc' self.rank1.children[1].children[0].font_name = 'msjhbd.ttc' self.rank1.children[1].children[2].font_size = '18' more_rank1 = MDLabel(text='人口消長:' + str(top3_rank[0][3])) more_rank1.font_name = 'msjhbd.ttc' more_rank1.font_style = 'Body1' more_rank1.font_size = 16 more_rank1.color = [0, 0, 0, 0.7] self.rank1.children[1].add_widget(more_rank1) self.rank1.children[1].size_hint = [1, None] self.rank1.children[1].children[3].pos = [56, 280] self.rank1.children[0].children[0].children[0].color = [1, 1, 1, 1] self.rank1.children[0].children[0].children[0].pos_hint = { 'left': 0.1 } self.rank1.children[0].padding = [-10, 0, 0, 0] self.rank1.children[1].children[3].theme_text_color = 'Custom' self.rank1.children[1].children[3].text_color = [1, 1, 1, 1] self.rank1.children[1].children[2].theme_text_color = 'Custom' self.rank1.children[1].children[2].text_color = [1, 1, 1, 1] self.rank1.children[1].children[1].theme_text_color = 'Custom' self.rank1.children[1].children[1].text_color = [1, 1, 1, 1] self.rank1.children[1].children[0].theme_text_color = 'Custom' self.rank1.children[1].children[0].text_color = [1, 1, 1, 1] # 從另一個預先寫好、計算各里指標分數的模組final_combiner引進final_rank函數,取得前三名的區域及其各項指標分數後用top3_rank變數紀錄起來 # 接著改寫、擴充kivy套件內的工具(ThreeLineIconListItem),做成資訊卡,同時使其擁有按鈕的特性讓使用者做點選 self.rank2 = ThreeLineIconListItem( text=top3_rank[1][0], secondary_text='人口特性:' + str(top3_rank[1][1]), tertiary_text='新資所得:' + str(top3_rank[1][2])) self.rank2.add_widget(IconLeftWidget(icon='numeric-2-box')) self.rank2.bg_color = [0, 0, 0, 0] self.rank2.children[1].children[2].font_size = '18' self.rank2.children[1].children[2].font_name = 'msjhbd.ttc' self.rank2.children[1].children[1].font_name = 'msjhbd.ttc' self.rank2.children[1].children[0].font_name = 'msjhbd.ttc' more_rank2 = MDLabel(text='人口消長:' + str(top3_rank[1][3])) more_rank2.font_name = 'msjhbd.ttc' more_rank2.font_style = 'Body1' more_rank2.font_size = 16 more_rank2.color = [0, 0, 0, 0.54] self.rank2.children[1].add_widget(more_rank2) self.rank2.children[1].size_hint = [1, None] self.rank2.children[0].children[0].children[0].color = [1, 1, 1, 1] self.rank2.children[0].children[0].children[0].pos_hint = { 'left': 0.1 } self.rank2.children[0].padding = [-10, 0, 0, 0] self.rank2.children[1].children[3].theme_text_color = 'Custom' self.rank2.children[1].children[3].text_color = [1, 1, 1, 1] self.rank2.children[1].children[2].theme_text_color = 'Custom' self.rank2.children[1].children[2].text_color = [1, 1, 1, 1] self.rank2.children[1].children[1].theme_text_color = 'Custom' self.rank2.children[1].children[1].text_color = [1, 1, 1, 1] self.rank2.children[1].children[0].theme_text_color = 'Custom' self.rank2.children[1].children[0].text_color = [1, 1, 1, 1] self.rank3 = ThreeLineIconListItem( text=top3_rank[2][0], secondary_text='人口特性:' + str(top3_rank[2][1]), tertiary_text='新資所得:' + str(top3_rank[2][2])) self.rank3.add_widget(IconLeftWidget(icon='numeric-3-box')) self.rank3.bg_color = [0, 0, 0, 0] self.rank3.children[1].children[2].font_size = '18' self.rank3.children[1].children[2].font_name = 'msjhbd.ttc' self.rank3.children[1].children[1].font_name = 'msjhbd.ttc' self.rank3.children[1].children[0].font_name = 'msjhbd.ttc' more_rank3 = MDLabel(text='人口消長:' + str(top3_rank[2][3])) more_rank3.font_name = 'msjhbd.ttc' more_rank3.font_style = 'Body1' more_rank3.font_size = 16 more_rank3.color = [0, 0, 0, 0.54] self.rank3.children[1].add_widget(more_rank3) self.rank3.children[1].size_hint = [1, None] self.rank3.children[0].children[0].children[0].color = [1, 1, 1, 1] self.rank3.children[0].children[0].children[0].pos_hint = { 'left': 0.1 } self.rank3.children[0].padding = [-10, 0, 0, 0] self.rank3.children[1].children[3].theme_text_color = 'Custom' self.rank3.children[1].children[3].text_color = [1, 1, 1, 1] self.rank3.children[1].children[2].theme_text_color = 'Custom' self.rank3.children[1].children[2].text_color = [1, 1, 1, 1] self.rank3.children[1].children[1].theme_text_color = 'Custom' self.rank3.children[1].children[1].text_color = [1, 1, 1, 1] self.rank3.children[1].children[0].theme_text_color = 'Custom' self.rank3.children[1].children[0].text_color = [1, 1, 1, 1] self.rank1.size = [352, 100] self.rank2.size = [352, 100] self.rank3.size = [352, 100] self.click += 1 self.rank1.children[1].padding = [56, 16, 24, 7] self.rank2.children[1].padding = [56, 4, 24, 7] self.rank3.children[1].padding = [56, 4, 24, 7] self.rank1.children[1].children[0].adaptive_height = True self.rank1.children[1].pos = [0, 180] self.rank2.children[1].children[1].adaptive_height = True self.rank2.children[1].pos = [0, 130] self.rank3.children[1].children[1].adaptive_height = True self.add_widget( MDGridLayout(cols=1, size_hint=[0.285, 1], md_bg_color=[0.39, 0.4, 0.72, 1])) self.children[0].add_widget(self.rank1) self.children[0].add_widget(self.rank2) self.children[0].add_widget(self.rank3) self.rank1.bind(on_release=self.add_renk1_marker) self.rank2.bind(on_release=self.add_renk2_marker) self.rank3.bind(on_release=self.add_renk3_marker)
def __init__(self,**kw): super().__init__() self.text=kw['text'] self.icon=IconLeftWidget(icon=kw['icon']) self.add_widget(self.icon) self.on_release=kw['on_release']
def __init__(self, Letter, **kwargs): super(Main_1, self).__init__(**kwargs) if line == False: lines = 1 sp = 0.015 elif line == True: lines = 3 sp = 0.02 view = ScrollView() layout = GridLayout(cols=1, padding=Window.height * sp, spacing=Window.height * sp, size_hint_y=None) layout.bind(minimum_height=layout.setter("height")) for i in range(X[str(Letter)]): no = i letter = Letter + str(i + 1) if len(letter) == 2: z = str(letter[0]) + '.' + str(letter[1]) y = str(letter[0]) + '.' + str(int(letter[1]) + 1) elif len(letter) == 3: z = str(letter[0]) + '.' + str(letter[1]) + str(letter[2]) y = str(letter[0]) + '.' + str( int(str(letter[1]) + str(letter[2])) + 1) string = A.split(z)[1].split(y)[0] string1 = [] for i in string: if i != '\t': string1.append(i) x = ''.join(string1) m = x.split('\n') x = '\n'.join(m[0:lines]) m = x.split('\n') n = [] j = 0 for i in m: if len(i) >= j: j = len(i) size_y = Window.height * 0.05 * (len(m)) size_x = j * Window.height * 0.042 / 2.25 if Window.width > size_x: size_x = Window.width btn = Cbutton(lts=letter, font_name="kannada_mallige", text="[font=Roboto-Bold][b][size=" + str(int(Window.height * 0.05)) + ']' + str(letter) + '. ' + '[/size][/b][/font]' + x + "[font=Roboto-Bold][b][size=" + str(int(Window.height * 0.05)) + ']' + ' ' + '[/size][/b][/font]', bold=True, markup=True, size=(size_x, size_y), font_size=(Window.height * 0.04), background_color=(1, 1, 1, 0), size_hint=(None, None), halign='left', valign='center', pos=(0, Window.height - 100), color=(0, 0, 0, 1)) btn.bind(on_release=self.Screens_2) layout.add_widget(btn) view.add_widget(layout) box = BoxLayout(orientation='vertical') toolbar = TwoLineIconListItem(bg_color=(0, .588, .533, 1)) back_icon = IconLeftWidget(icon='arrow-left-thick') back_icon.bind(on_release=self.back) toolbar.add_widget(back_icon) box.add_widget(toolbar) box.add_widget(view) self.add_widget(box)
def __init__(self, **kwargs): super(Starred, self).__init__(**kwargs) view = ScrollView() layout = GridLayout(cols=1, padding=Window.height * 0.01, spacing=Window.height * 0.01, size_hint_y=None) layout.bind(minimum_height=layout.setter("height")) for i in Star: letter = i if len(letter) == 2: z = str(letter[0]) + '.' + str(letter[1]) y = str(letter[0]) + '.' + str(int(letter[1]) + 1) elif len(letter) == 3: z = str(letter[0]) + '.' + str(letter[1]) + str(letter[2]) y = str(letter[0]) + '.' + str( int(str(letter[1]) + str(letter[2])) + 1) string = A.split(z)[1].split(y)[0] string1 = [] for i in string: if i != '\t': string1.append(i) a = ''.join(string1) x = [] for i in range(len(a)): if a[i].isdecimal() and a[i + 1] != ')': x.append('\n' + a[i]) else: x.append(a[i]) x = ''.join(x) m = x.split('\n') x = '\n'.join(m[0:6]) m = x.split('\n') n = [] j = 0 for i in m: if len(i) >= j: j = len(i) size_y = Window.height * 0.05 * (len(m)) size_x = j * Window.height * 0.042 / 2.25 if Window.width > size_x: size_x = Window.width btn = Button(id=letter, font_name="kannada_mallige", text="[font=Roboto-Bold][b][size=" + str(int(Window.height * 0.05)) + ']' + str(letter) + '. ' + '[/size][/b][/font]' + x, size=(size_x, size_y), font_size=(Window.height * 0.04), text_size=(None, None), markup=True, background_color=(1, 1, 1, 0), size_hint=(None, None), halign='left', valign='center', pos=(0, Window.height - 100), color=(0, 0, 0, 1)) # valign = 'top') btn.bind(on_release=self.Screens_2) layout.add_widget(btn) view.add_widget(layout) box = BoxLayout(orientation='vertical') toolbar = TwoLineIconListItem(bg_color=(0, .588, .533, 1)) back_icon = IconLeftWidget(icon='arrow-left-thick') back_icon.bind(on_release=self.back) toolbar.add_widget(back_icon) box.add_widget(toolbar) box.add_widget(view) self.add_widget(box)
def __init__(self, letter, **kwargs): super(Main_2, self).__init__(**kwargs) if len(letter) == 2: z = str(letter[0]) + '.' + str(letter[1]) y = str(letter[0]) + '.' + str(int(letter[1]) + 1) elif len(letter) == 3: z = str(letter[0]) + '.' + str(letter[1]) + str(letter[2]) y = str(letter[0]) + '.' + str( int(str(letter[1]) + str(letter[2])) + 1) string = A.split(z)[1].split(y)[0] string1 = [] for i in string: if i != '\t': string1.append(i) a = ''.join(string1) boldness = bold x = [] for i in range(len(a)): if a[i].isdecimal() and a[i + 1] != ')': x.append('\n' + a[i]) else: x.append(a[i]) x = ''.join(x) m = x.split('\n') n = [] j = 0 for i in m: if len(i) >= j: j = len(i) size_y = Window.height * 0.043 * (len(m) + 5) size_x = j * Window.height * 0.045 / 2.25 if Window.width > size_x: size_x = Window.width btn = Label(font_name="kannada_mallige", text="[font=Roboto-Bold][b][size=" + str(int(Window.height * 0.05)) + ']' + str(letter) + '. ' + '[/size][/b][/font]' + x, size=(size_x, size_y), font_size=(Window.height * 0.04), text_size=(None, None), bold=boldness, markup=True, size_hint=(None, None), halign='left', valign='top', color=(0, 0, 0, 1)) root = ScrollView(size_hint=(1, 1)) root.add_widget(btn) box = BoxLayout(orientation='vertical') toolbar = TwoLineIconListItem(bg_color=(0, .588, .533, 1)) back_icon = IconLeftWidget(icon='arrow-left-thick') back_icon.bind(on_release=self.back) toolbar.add_widget(back_icon) box.add_widget(toolbar) box.add_widget(root) self.add_widget(box) star = MDIconButton(icon="star-outline", pos_hint={ 'right': 1, 'top': 1 }) star.bind(on_release=self.bookmark) self.add_widget(star)
def pressed(self, instance): print([ int(self.left.two.input1.text), int(self.left.two.input3.text), int(self.left.two.input5.text) ]) a = final_combiner.final_rank([ int(self.left.two.input1.text), int(self.left.two.input3.text), int(self.left.two.input5.text) ]) print(a) if not self.acard: #bb = ThreeLineIconListItem(text=self.left.two.input1.text, secondary_text='22', tertiary_text='333') #bb.add_widget(IconLeftWidget(icon='language-python')) #bb.bg_color = [0.5,1,1,1] print(a) self.rank1 = ThreeLineIconListItem( text=a[0][0], secondary_text='人口特性:' + str(a[0][1]), tertiary_text='新資所得:' + str(a[0][2])) # , size = [352, 100] self.rank1.add_widget(IconLeftWidget(icon='numeric-1-box')) self.rank1.bg_color = [0.5, 0.5, 0.5, 0.5] self.rank1.children[1].children[2].font_name = 'msjhbd.ttc' self.rank1.children[1].children[1].font_name = 'msjhbd.ttc' self.rank1.children[1].children[0].font_name = 'msjhbd.ttc' self.rank1.children[1].children[2].font_size = '18' more_rank1 = MDLabel(text='人口消長:' + str(a[0][3])) more_rank1.font_name = 'msjhbd.ttc' more_rank1.font_style = 'Body1' more_rank1.font_size = 16 more_rank1.color = [0, 0, 0, 0.54] self.rank1.children[1].add_widget(more_rank1) self.rank1.children[1].size_hint = [1, None] self.rank1.children[1].children[3].pos = [56, 280] self.rank2 = ThreeLineIconListItem( text=a[1][0], secondary_text='人口特性:' + str(a[1][1]), tertiary_text='新資所得:' + str(a[1][2])) #rank2.children[1].add_widget(MDLabel(text='新資所得' + str(a[1][2]), font_name='msjhbd.ttc', font_size=16, font_style='Body1')) #rank2.add_widget(tertiary_text='新資所得' + str(a[1][2])) self.rank2.add_widget(IconLeftWidget(icon='numeric-2-box')) self.rank2.bg_color = [0.5, 0.5, 0.5, 0.5] self.rank2.children[1].children[2].font_size = '18' self.rank2.children[1].children[2].font_name = 'msjhbd.ttc' self.rank2.children[1].children[1].font_name = 'msjhbd.ttc' self.rank2.children[1].children[0].font_name = 'msjhbd.ttc' more_rank2 = MDLabel(text='人口消長:' + str(a[1][3])) more_rank2.font_name = 'msjhbd.ttc' more_rank2.font_style = 'Body1' more_rank2.font_size = 16 more_rank2.color = [0, 0, 0, 0.54] self.rank2.children[1].add_widget(more_rank2) self.rank2.children[1].size_hint = [1, None] self.rank3 = ThreeLineIconListItem( text=a[2][0], secondary_text='人口特性:' + str(a[2][1]), tertiary_text='新資所得:' + str(a[2][2])) #rank2.children[1].add_widget(MDLabel(text='新資所得' + str(a[1][2]), font_name='msjhbd.ttc', font_size=16, font_style='Body1')) #rank2.add_widget(tertiary_text='新資所得' + str(a[1][2])) self.rank3.add_widget(IconLeftWidget(icon='numeric-3-box')) self.rank3.bg_color = [0.5, 0.5, 0.5, 0.5] self.rank3.children[1].children[2].font_size = '18' self.rank3.children[1].children[2].font_name = 'msjhbd.ttc' self.rank3.children[1].children[1].font_name = 'msjhbd.ttc' self.rank3.children[1].children[0].font_name = 'msjhbd.ttc' more_rank3 = MDLabel(text='人口消長:' + str(a[2][3])) more_rank3.font_name = 'msjhbd.ttc' more_rank3.font_style = 'Body1' more_rank3.font_size = 16 more_rank3.color = [0, 0, 0, 0.54] self.rank3.children[1].add_widget(more_rank3) self.rank3.children[1].size_hint = [1, None] # rank2.children[1].(MDLabel(text='新資所得' + str(a[1][2]))) # rank2.children[1].children[3].font_name = 'msjhbd.ttc' # rank2.children[1].children[3].font_size = 16 # rank2.children[1].children[3].font_style = 'Body1' self.rank1.size = [352, 100] self.rank2.size = [352, 100] self.rank3.size = [352, 100] #rank1.children[1].pos_hint = {'y': 1} self.click += 1 self.rank1.bind(on_release=self.add_renk1_marker) self.rank2.bind(on_release=self.add_renk2_marker) self.rank3.bind(on_release=self.add_renk3_marker) # self.acard = MDDialog( # #title="Discard draft?", # type="simple", # items=[ # rank1, # rank2, # rank3 # ], # buttons=[ # MDFlatButton( # text=" ", text_color=self.theme_cls.primary_color # ), # MDRectangleFlatIconButton( # text="I know!", text_color=self.theme_cls.primary_color, font_name='msjhbd.ttc', on_release=self.dialog_vanish # ) # ], # #center = [640, 480] # ) # self.acard.center = [640, 480] # self.acard.background_color = [0,0,0,0] # self.acard.md_bg_color = [0.9607,0.9607,0.9607,0.6] # self.acard.auto_dismiss = False # #self.rank1 = TwoLineIconListItem(text=self.left.two.input1.text, icon='crown') # #self.rank1 = FourLineIconListItem(text=self.left.two.input1.text, text_color=[0,0,0,1]) # #self.rank1.add_widget(IconLeftWidget(icon='language-python')) # #self.rank1.bg_color=[0.5,0.5,0.5,0.5] # self.acard.size_hint = [0.25, 0.5] # self.acard.children[0].size_hint = [1, 1.1] # self.acard.children[0].children[2].children[0].spacing = [0, 3] # 這式調整各rank之間距離 # self.acard.children[0].children[2].size_hint = [1,1] # 這是調scrollview的size比例,不要有捲動行為 # self.acard.children[0].children[2].bar_width = 5 # self.acard.children[0].children[2].bar_color = [0.5, 0.5, 0.7, 1] #self.acard.children[0].children[2].children[0].children[2].size_hint = [1, 1] #self.acard.children[0].children[2].children[0].size_hint = [1,1] # 這是調 #self.acard.children[0].children[2].children[0].add_widget(self.rank1) self.rank1.children[1].padding = [56, 16, 24, 7] self.rank2.children[1].padding = [56, 4, 24, 7] self.rank3.children[1].padding = [56, 4, 24, 7] self.rank1.children[1].children[0].adaptive_height = True self.rank1.children[1].pos = [0, 180] self.rank2.children[1].children[1].adaptive_height = True self.rank2.children[1].pos = [0, 130] self.rank3.children[1].children[1].adaptive_height = True #rank1.children[1].children[0].valign = 'top' #rank1.children[1].children[0].y = 224 #self.acard. # self.acard.center_y = 480 # self.acard.pos_hint = {'top':0.99, 'right':1} # self.wid.add_widget(self.rank1) # self.wid.add_widget(self.rank2) # self.r.add_widget(self.rank3) self.add_widget( MDGridLayout(cols=1, size_hint=[0.285, 1], md_bg_color=[0.39, 0.4, 0.72, 1])) self.children[0].add_widget(self.rank1) self.children[0].add_widget(self.rank2) self.children[0].add_widget(self.rank3)
def __init__(self, **kwargs): super().__init__(**kwargs) self.add_widget( IconLeftWidget(icon=self.icon, theme_text_color="Custom", text_color=self.text_color))
def __init__(self, **kwargs): super(Index, self).__init__(**kwargs) view = ScrollView() layout = GridLayout(cols=1, padding=Window.height * 0.01, spacing=Window.height * 0.05, size_hint_y=None) layout.bind(minimum_height=layout.setter("height")) for i in labels: s = i s_ = [] for ss in range(len(s)): if ss == 1: s_.append('.' + s[ss]) else: s_.append(s[ss]) s_ = ''.join(s_) A_ = A.split('\n') for m in A_: if s_ in m: m = m.split(s_)[1] j = len(m) size_x = j * Window.height * 0.042 / 2.25 if Window.width > size_x: size_x = Window.width btn = Cbutton(lts=i, font_name="kannada_mallige", text="[font=Roboto-Bold][b][size=" + str(int(Window.height * 0.05)) + ']' + str(i) + '. ' + '[/size][/b][/font]' + m + "[font=Roboto-Bold][b][size=" + str(int(Window.height * 0.05)) + ']' + '.... ' + '[/size][/b][/font]', markup=True, size=(size_x, Window.height * 0.06), font_size=(Window.height * 0.04), background_color=(1, 1, 1, 0), size_hint=(None, None), halign='left', valign='center', pos=(0, Window.height - 100), color=(0, 0, 0, 1)) btn.bind(on_release=self.Screens_2) layout.add_widget(btn) break view.add_widget(layout) box = BoxLayout(orientation='vertical') toolbar = TwoLineIconListItem(bg_color=(0, .588, .533, 1)) back_icon = IconLeftWidget(icon='arrow-left-thick') back_icon.bind(on_release=self.back) toolbar.add_widget(back_icon) box.add_widget(toolbar) box.add_widget(view) self.add_widget(box)
def FileCart_Update(self): MainScreenvar = sm.get_screen('main_screen') #We then clear the container of all widgets for a frsh batch of list items MainScreenvar.ids.back_layer.ids.container.clear_widgets() #First we get the amount of rows in the selection tables to see how much times we must itterate mycursor.execute("SELECT COUNT(name) FROM selection") self.cart_icons_amount = mycursor.fetchone() #Then we get the actual data that we must use to create the elements mycursor.execute("SELECT * FROM selection") self.filecart_data = mycursor.fetchall() for i in range (self.cart_icons_amount[0]): #Check to see if the current element is a file or a directory if self.filecart_data[i][2] == "File": #Check too see if a copy operation was executed on the file if self.filecart_data[i][3] == '1': #Create the list item to be insert into scroll view self.item = ThreeLineIconListItem(text = str(self.filecart_data[i][0]), secondary_text = self.filecart_data[i][1], tertiary_text = "Copied", ) #Create the icon self.item2 = IconLeftWidget(icon = 'file', pos= self.pos, size = self.size, ) self.item.bind(on_release = self.customcallback_function) #Add icon to list item self.item.add_widget(self.item2) #Add total list item with icon to the scroll view MainScreenvar.ids.back_layer.ids.container.add_widget(self.item) #Check too see if a cut operation was executed on the file elif self.filecart_data[i][3] == '2': self.item = ThreeLineIconListItem(text = str(self.filecart_data[i][0]), secondary_text = self.filecart_data[i][1], tertiary_text = "Cut", ) self.item2 = IconLeftWidget(icon = 'file', pos= self.pos, size = self.size ) self.item.bind(on_release = self.customcallback_function) self.item.add_widget(self.item2) MainScreenvar.ids.back_layer.ids.container.add_widget(self.item) #Check to see if a delete operation was executed on the file elif self.filecart_data[i][3] == '3': self.item = ThreeLineIconListItem(text = str(self.filecart_data[i][0]), secondary_text = self.filecart_data[i][1], tertiary_text = "Recycled", ) self.item2 = IconLeftWidget(icon = 'file', pos= self.pos, size = self.size ) self.item.bind(on_release = self.customcallback_function) self.item.add_widget(self.item2) MainScreenvar.ids.back_layer.ids.container.add_widget(self.item) else: if self.filecart_data[i][3] == '1': self.item = ThreeLineIconListItem(text = str(self.filecart_data[i][0]), secondary_text = self.filecart_data[i][1], tertiary_text = "Copied", ) self.item2 = IconLeftWidget(icon = 'folder', pos= self.pos, size = self.size ) self.item.bind(on_release = self.customcallback_function) self.item.add_widget(self.item2) MainScreenvar.ids.back_layer.ids.container.add_widget(self.item) elif self.filecart_data[i][3] == '2': self.item = ThreeLineIconListItem(text = str(self.filecart_data[i][0]), secondary_text = self.filecart_data[i][1], tertiary_text = "Cut", ) self.item2 = IconLeftWidget(icon = 'folder', pos= self.pos, size = self.size ) self.item.bind(on_release = self.customcallback_function) self.item.add_widget(self.item2) MainScreenvar.ids.back_layer.ids.container.add_widget(self.item) elif self.filecart_data[i][3] == '3': self.item = ThreeLineIconListItem(text = str(self.filecart_data[i][0]), secondary_text = self.filecart_data[i][1], tertiary_text = "Recycled", ) self.item.bind(on_release = self.customcallback_function) self.item2 = IconLeftWidget(icon = 'folder', pos= self.pos, size = self.size ) self.item.bind(on_release = self.customcallback_function) self.item.add_widget(self.item2) MainScreenvar.ids.back_layer.ids.container.add_widget(self.item)
def on_enter(self, *args): global StudentName global StudentRollNo self.ids.student_name.text = StudentName query = "SELECT std.cs_code,stf.class,stf.subject,stft.name " \ "FROM student_class std,staff_class stf,staff_table stft " \ "where std.cs_code=stf.cs_code and stft.sid=stf.sid and std.roll_no=%s" val = (StudentRollNo, ) tmp_cursor.execute(query, val) result = tmp_cursor.fetchall() class Content(BoxLayout): def __init__(self, *args, **kwargs): super().__init__(**kwargs) global StudentRollNo self.size_hint_y = None self.height = Window.height * 0.6 self.clear_widgets() months = [ 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC' ] query = "SELECT MONTH(date),count(distinct DAY(date)) from attendance where cs_code=%s group by MONTH(date)" val = (self.id, ) tmp_cursor.execute(query, val) result = tmp_cursor.fetchall() table_rows = [] for row in result: q = "select count(*) from attendance where cs_code=%s and MONTH(date)=%s and roll_no=%s and report='P'" v = ( self.id, row[0], StudentRollNo, ) tmp_cursor.execute(q, v) r = tmp_cursor.fetchall() table_rows.append([months[row[0] - 1], row[1], r[0][0]]) if len(table_rows) == 0: lbl = MDLabel(text='No data found', halign='center') self.add_widget(lbl) return data_table = MDDataTable(rows_num=len(table_rows), column_data=[("Month", dp(12)), (" Total Classes", dp(13)), (" Presents", dp(18))], row_data=table_rows) self.add_widget(data_table) class ClassList(ThreeLineIconListItem): def setID(self, idd): self.id = idd def on_release(self): obj = Content(id=self.id) dialog = MDDialog(title="Attendance", size_hint=(0.9, 1), type="custom", content_cls=obj) dialog.open() scrollview = ScrollView() classes = MDList() for row in result: icon = IconLeftWidget(icon='account-group') cls = ClassList(text=row[1], secondary_text=row[2], tertiary_text='Faculty:' + row[3]) cls.setID(row[0]) cls.add_widget(icon) classes.add_widget(cls) scrollview.add_widget(classes) self.ids.dashboard.add_widget(scrollview)
def __init__(self, **kwargs): super(CustomList, self).__init__(**kwargs) self.add_widget(IconLeftWidget(icon='phone'))