updates
parent
10825e67b6
commit
545907b953
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
After Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 491 KiB |
Binary file not shown.
@ -0,0 +1,242 @@
|
||||
#:import get_color_from_hex kivy.utils.get_color_from_hex
|
||||
#:import images_path kivymd.images_path
|
||||
#:import colors kivymd.color_definitions.colors
|
||||
#:import partial functools.partial
|
||||
#:import NoTransition kivy.uix.screenmanager.NoTransition
|
||||
# :import MDCarousel kivymd.uix.carousel.MDCarousel
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## CLASS DEFS
|
||||
|
||||
<MyBoxLayout>:
|
||||
orientation: "vertical"
|
||||
pos_hint: {'center_x':0.5, 'center_y':0.5}
|
||||
size_hint:0.5,0.5
|
||||
padding:'10dp'
|
||||
md_bg_color:0,0,0,1
|
||||
canvas:
|
||||
Color:
|
||||
rgb: 1,0,0,2
|
||||
Line:
|
||||
width: 1
|
||||
rectangle: (self.x, self.y, self.width, self.height)
|
||||
|
||||
|
||||
<MyLabel>:
|
||||
theme_text_color: 'Custom'
|
||||
text_color: (1,0,0,1)
|
||||
pos_hint: {'center_y': 0.5}
|
||||
halign: 'center'
|
||||
height: self.texture_size[1]
|
||||
font_family: 'Courier'
|
||||
|
||||
|
||||
|
||||
|
||||
<PostCard>:
|
||||
id: post
|
||||
orientation: "vertical"
|
||||
padding: "8dp"
|
||||
size_hint: (0.9, 0.9)
|
||||
pos_hint: {"center_x": .5, "center_y": .5}
|
||||
|
||||
MDSeparator:
|
||||
id: post_title_sep
|
||||
height: '0dp'
|
||||
|
||||
MDLabel:
|
||||
id: post_title
|
||||
text: self.title
|
||||
size_hint_y: None
|
||||
height: self.texture_size[1]
|
||||
font_style: 'H5'
|
||||
halign: 'center'
|
||||
|
||||
MDSeparator:
|
||||
id: post_title_sep2
|
||||
height: '25dp'
|
||||
|
||||
AsyncImage:
|
||||
id: post_img
|
||||
|
||||
MDLabel:
|
||||
id: post_content
|
||||
text: self.content
|
||||
pos_hint: {'center_y':1}
|
||||
font_style: 'Body1'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### LAYOUT
|
||||
|
||||
MyLayout:
|
||||
scr_mngr: scr_mngr
|
||||
orientation: 'vertical'
|
||||
height: self.minimum_height
|
||||
|
||||
canvas:
|
||||
Color:
|
||||
rgba: 0.925,0.925,0.925,1 #get_color_from_hex(colors['Gray']['900'])
|
||||
|
||||
Rectangle:
|
||||
pos: self.pos
|
||||
size: self.size
|
||||
source: 'assets/komrade.png'
|
||||
|
||||
|
||||
MDToolbar:
|
||||
id: toolbar
|
||||
title: app.title
|
||||
pos_hint: {'center_x': .5, 'center_y': 0.95}
|
||||
md_bg_color: 0.1,0.1,0.1,1
|
||||
background_palette: 'Red'
|
||||
background_hue: '500'
|
||||
specific_text_color: 1,0,0,1
|
||||
# right_action_items: [['radio-tower', partial(root.change_screen, 'feed')], ['account-group', partial(root.change_screen, 'people')], ['calendar', partial(root.change_screen, 'events')], ['message-processing-outline', partial(root.change_screen, 'messages')], ['bell-outline', partial(root.change_screen, 'notifications')]]
|
||||
right_action_items: [['post-outline', partial(root.change_screen, 'feed')], ['message-processing-outline', partial(root.change_screen, 'messages')], ['bell-outline', partial(root.change_screen, 'notifications')]]
|
||||
left_action_items: [[f"assets/logo.png", partial(root.change_screen, 'feed')]]
|
||||
|
||||
ScreenManager:
|
||||
id: scr_mngr
|
||||
# transition: NoTransition()
|
||||
|
||||
|
||||
|
||||
|
||||
###
|
||||
# LOGIN SCREEN
|
||||
###
|
||||
|
||||
LoginScreen:
|
||||
name: "login"
|
||||
# text: "Login"
|
||||
# icon: "login"
|
||||
|
||||
MyBoxLayout:
|
||||
id: loginbox
|
||||
size_hint:0.5,0.2
|
||||
|
||||
MDTextField:
|
||||
id: username
|
||||
hint_text: "username"
|
||||
required: True
|
||||
write_tab: False
|
||||
multiline: False
|
||||
helper_text_mode: "on_error"
|
||||
color_mode: 'custom'
|
||||
line_color_focus: 1,0,0,1
|
||||
line_color_normal: 1,0,0,1
|
||||
current_hint_text_color: 1,0,0,1
|
||||
|
||||
MDTextField:
|
||||
id: password
|
||||
password: True
|
||||
hint_text: "password"
|
||||
required: True
|
||||
write_tab: False
|
||||
multiline: False
|
||||
helper_text_mode: "on_error"
|
||||
color_mode: 'custom'
|
||||
line_color_focus: 1,0,0,1
|
||||
line_color_normal: 1,0,0,1
|
||||
current_hint_text_color: 1,0,0,1
|
||||
|
||||
|
||||
MDBoxLayout:
|
||||
id: buttonbox
|
||||
size_hint_y: None
|
||||
adaptive_width: True
|
||||
height: dp(56)
|
||||
spacing: '10dp'
|
||||
pos_hint: {'center_x': .5}
|
||||
|
||||
MDRectangleFlatButton:
|
||||
text: "login"
|
||||
on_release:
|
||||
app.login(username.text, password.text)
|
||||
#app.root.change_screen("welcome")
|
||||
theme_text_color: "Custom"
|
||||
text_color: 1,0,0,1
|
||||
md_bg_color: 0,0,0,1
|
||||
|
||||
|
||||
MDRectangleFlatButton:
|
||||
text: "register"
|
||||
on_release:
|
||||
app.register(username.text, password.text)
|
||||
theme_text_color: "Custom"
|
||||
text_color: 1,0,0,1
|
||||
md_bg_color: 0,0,0,1
|
||||
|
||||
MDLabel:
|
||||
id: login_status
|
||||
text:""
|
||||
theme_text_color: 'Error'
|
||||
pos_hint:{'center_x':.5}
|
||||
|
||||
|
||||
|
||||
WelcomeScreen:
|
||||
name: 'welcome'
|
||||
|
||||
MyBoxLayout:
|
||||
size_hint:0.666,0.666
|
||||
|
||||
#MyLabel:
|
||||
# text: "Welcome!"
|
||||
# font_style: "H3"
|
||||
# pos_hint: {'center_y':0.85}
|
||||
|
||||
MyLabel:
|
||||
text: "\n\nTurning and turning in the widening gyre \nThe falcon cannot hear the falconer;\nThings fall apart; the centre cannot hold;\nMere anarchy is loosed upon the world,\nThe blood-dimmed tide is loosed, and everywhere \nThe ceremony of innocence is drowned;\nThe best lack all conviction, while the worst \nAre full of passionate intensity.\n\nSurely some revelation is at hand..."
|
||||
|
||||
|
||||
PeopleScreen:
|
||||
name: 'people'
|
||||
|
||||
ScrollView:
|
||||
id: scroll
|
||||
size_hint: (1, 1)
|
||||
pos_hint: {'center_x': .5, 'y': 0}
|
||||
do_scroll_x: False
|
||||
bar_width: 0
|
||||
scroll_type: ['content']
|
||||
|
||||
MDList:
|
||||
id: container
|
||||
# size_hint_y: None
|
||||
# height: '100dp'
|
||||
#padding: 0, self._list_vertical_padding
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
FeedScreen:
|
||||
name: 'feed'
|
||||
#MyLabel:
|
||||
# text: "The falcon cannot hear the falconer..."
|
||||
Carousel:
|
||||
id: post_carousel
|
||||
direction: 'right'
|
||||
|
||||
|
||||
|
||||
|
||||
EventsScreen:
|
||||
name: 'events'
|
||||
|
||||
MessagesScreen:
|
||||
name: 'messages'
|
||||
|
||||
NotificationsScreen:
|
||||
name: 'notifications'
|
||||
|
@ -0,0 +1,182 @@
|
||||
from kivy.uix.screenmanager import Screen,ScreenManager
|
||||
from kivymd.app import MDApp
|
||||
from kivymd.uix.button import MDFillRoundFlatButton, MDIconButton
|
||||
from kivymd.uix.toolbar import MDToolbar
|
||||
from kivymd.uix.screen import MDScreen
|
||||
from kivy.lang import Builder
|
||||
from kivy.uix.boxlayout import BoxLayout
|
||||
from kivymd.theming import ThemeManager
|
||||
from kivy.properties import ObjectProperty,ListProperty
|
||||
import time
|
||||
from collections import OrderedDict
|
||||
from functools import partial
|
||||
from kivy.uix.screenmanager import NoTransition
|
||||
from kivymd.uix.label import MDLabel
|
||||
from kivy.uix.widget import Widget
|
||||
from kivymd.uix.list import OneLineListItem
|
||||
from kivymd.uix.card import MDCard, MDSeparator
|
||||
from kivymd.uix.boxlayout import MDBoxLayout
|
||||
from kivy.uix.gridlayout import GridLayout
|
||||
from kivy.metrics import dp
|
||||
from kivy.properties import NumericProperty
|
||||
from kivymd.uix.list import * #MDList, ILeftBody, IRightBody, ThreeLineAvatarListItem, TwoLineAvatarListItem, BaseListItem, ImageLeftWidget
|
||||
from kivy.uix.image import Image, AsyncImage
|
||||
import requests,json
|
||||
from kivy.storage.jsonstore import JsonStore
|
||||
from kivy.core.window import Window
|
||||
Window.size = (640, 1136) #(2.65 * 200, 5.45 * 200)
|
||||
|
||||
|
||||
root = None
|
||||
app = None
|
||||
|
||||
def log(x):
|
||||
with open('log.txt','a+') as of:
|
||||
of.write(str(x)+'\n')
|
||||
|
||||
class MyLayout(MDBoxLayout):
|
||||
scr_mngr = ObjectProperty(None)
|
||||
|
||||
def change_screen(self, screen, *args):
|
||||
self.scr_mngr.current = screen
|
||||
|
||||
|
||||
class MyBoxLayout(MDBoxLayout): pass
|
||||
|
||||
class MyLabel(MDLabel): pass
|
||||
|
||||
|
||||
class PostCard(MDCard):
|
||||
def __init__(self, title = None, img_src = None, content = None):
|
||||
super().__init__()
|
||||
self.orientation="vertical"
|
||||
self.padding="8dp"
|
||||
self.size_hint=(0.9, 0.9)
|
||||
# self.md_bg_color=(1,0,0,1)
|
||||
self.pos_hint = {"center_x": .5, "center_y": .5}
|
||||
|
||||
if title:
|
||||
sep = MDSeparator()
|
||||
sep.height='25dp'
|
||||
self.add_widget(sep)
|
||||
|
||||
title = MDLabel(text=title)
|
||||
# title.theme_text_color="Secondary"
|
||||
title.size_hint_y=None
|
||||
title.height=title.texture_size[1]
|
||||
title.font_style='H5'
|
||||
title.halign='center'
|
||||
self.add_widget(title)
|
||||
|
||||
# spacing?
|
||||
sep = MDSeparator()
|
||||
sep.height='25dp'
|
||||
self.add_widget(sep)
|
||||
|
||||
|
||||
if img_src:
|
||||
image = AsyncImage(source=img_src)
|
||||
self.add_widget(image)
|
||||
|
||||
if content:
|
||||
content=MDLabel(text=content)
|
||||
content.pos_hint={'center_y':1}
|
||||
content.font_style='Body1'
|
||||
self.add_widget(content)
|
||||
|
||||
|
||||
|
||||
class ProtectedScreen(MDScreen):
|
||||
def on_pre_enter(self):
|
||||
global app
|
||||
if not app.is_logged_in():
|
||||
app.root.change_screen('login')
|
||||
|
||||
|
||||
|
||||
|
||||
class WelcomeScreen(ProtectedScreen): pass
|
||||
class LoginScreen(MDScreen):
|
||||
#def on_pre_enter(self):
|
||||
# global app
|
||||
# if app.is_logged_in():
|
||||
# app.root.change_screen('feed')
|
||||
|
||||
class PeopleScreen(ProtectedScreen): pass
|
||||
class EventsScreen(ProtectedScreen): pass
|
||||
class MessagesScreen(ProtectedScreen): pass
|
||||
class NotificationsScreen(ProtectedScreen): pass
|
||||
|
||||
|
||||
class FeedScreen(ProtectedScreen):
|
||||
def on_enter(self):
|
||||
i=0
|
||||
lim=5
|
||||
with open('tweets.txt') as f:
|
||||
for ln in f:
|
||||
if ln.startswith('@') or ln.startswith('RT '): continue
|
||||
i+=1
|
||||
if i>lim: break
|
||||
|
||||
#post = Post(title=f'Marx Zuckerberg', content=ln.strip())
|
||||
post = PostCard(title='Marx Zuckerberg',img_src='avatar.jpg',content=ln.strip())
|
||||
print(post)
|
||||
root.ids.post_carousel.add_widget(post)
|
||||
|
||||
|
||||
class MainApp(MDApp):
|
||||
title = 'Komrade'
|
||||
api = 'http://localhost:5555/api'
|
||||
logged_in=False
|
||||
store = JsonStore('komrade.json')
|
||||
login_expiry = 60 * 60 * 24 * 7 # once a week
|
||||
#login_expiry = 5 # 5 seconds
|
||||
|
||||
def build(self):
|
||||
global app,root
|
||||
app = self
|
||||
self.root = root = Builder.load_file('main.kv')
|
||||
if not self.is_logged_in():
|
||||
self.root.change_screen('login')
|
||||
else:
|
||||
self.root.change_screen('feed')
|
||||
return self.root
|
||||
|
||||
def is_logged_in(self):
|
||||
if self.logged_in: return True
|
||||
if not self.store.exists('user'): return False
|
||||
if self.store.get('user')['logged_in']:
|
||||
if time.time() - self.store.get('user')['logged_in_when'] < self.login_expiry:
|
||||
self.logged_in=True
|
||||
return True
|
||||
return False
|
||||
|
||||
def do_login(self):
|
||||
self.logged_in=True
|
||||
self.store.put('user',logged_in=True,logged_in_when=time.time())
|
||||
self.root.change_screen('feed')
|
||||
|
||||
|
||||
def login(self,un,pw):
|
||||
url = self.api+'/login'
|
||||
res = requests.post(url, json={'name':un, 'passkey':pw})
|
||||
|
||||
if res.status_code==200:
|
||||
self.do_login()
|
||||
else:
|
||||
self.root.ids.login_status.text=res.text
|
||||
|
||||
def register(self,un,pw):
|
||||
url = self.api+'/register'
|
||||
res = requests.post(url, json={'name':un, 'passkey':pw})
|
||||
if res.status_code==200:
|
||||
self.do_login()
|
||||
else:
|
||||
self.root.ids.login_status.text=res.text
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
App = MainApp()
|
||||
App.run()
|
@ -1,2 +1,20 @@
|
||||
[True, True]
|
||||
['build', True]
|
||||
<kivymd.uix.button.MDIconButton object at 0x7ff9e43dc0b0>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7ff9e4564f50>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7ff9e4564e80>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7f4fd99670b0>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7f4fd9aeff50>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7f4fd9aefe80>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7f593dbb00b0>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7f593dd39f50>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7f593dd39e80>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7fd23c30c0b0>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7fd23c495f50>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7fd23c495e80>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7fc74e8810b0>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7fc74ea0af50>
|
||||
<kivymd.uix.button.MDIconButton object at 0x7fc74ea0ae80>
|
||||
['_ButtonBehavior__state_event', '_ButtonBehavior__touch_time', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__events__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__metaclass__', '__module__', '__ne__', '__new__', '__proxy_getter', '__proxy_setter', '__pyx_vtable__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_apply_transform', '_call_get_bg_color_disabled', '_call_get_bg_color_down', '_context', '_current_button_color', '_disabled_count', '_disabled_value', '_do_press', '_do_release', '_doing_ripple', '_fading_out', '_finish_init', '_finishing_ripple', '_get_md_bg_color_disabled', '_get_md_bg_color_down', '_kwargs_applied_init', '_md_bg_color_disabled', '_md_bg_color_down', '_no_ripple_effect', '_proxy_ref', '_ripple_rad', '_set_color', '_set_ellipse', '_set_md_bg_color_disabled', '_set_md_bg_color_down', '_trigger_layout', '_update_color', '_update_specific_text_color', '_walk', '_walk_reverse', 'a', 'add_widget', 'always_release', 'anchor_x', 'anchor_y', 'anim_complete', 'apply_class_lang_rules', 'apply_property', 'b', 'background_hue', 'background_palette', 'bind', 'cancel_event', 'canvas', 'center', 'center_x', 'center_y', 'children', 'clear_widgets', 'cls', 'collide_point', 'collide_widget', 'create_property', 'dec_disabled', 'device_ios', 'disabled', 'dispatch', 'dispatch_children', 'dispatch_generic', 'do_layout', 'events', 'export_as_image', 'export_to_png', 'fade_out', 'fbind', 'finish_ripple', 'font_name', 'font_size', 'funbind', 'g', 'get_center_x', 'get_center_y', 'get_disabled', 'get_parent_window', 'get_property_observers', 'get_right', 'get_root_window', 'get_top', 'get_window_matrix', 'getter', 'height', 'icon', 'id', 'ids', 'inc_disabled', 'is_event_type', 'last_touch', 'lay_canvas_instructions', 'layout_hint_with_bounds', 'lbl_txt', 'md_bg_color', 'md_bg_color_disabled', 'md_bg_color_down', 'min_state_time', 'on_disabled', 'on_kv_post', 'on_md_bg_color', 'on_opacity', 'on_press', 'on_release', 'on_touch_down', 'on_touch_move', 'on_touch_up', 'opacity', 'opposite_colors', 'padding', 'parent', 'pos', 'pos_hint', 'properties', 'property', 'proxy_ref', 'r', 'radius', 'register_event_type', 'remove_widget', 'right', 'ripple_alpha', 'ripple_color', 'ripple_duration_in_fast', 'ripple_duration_in_slow', 'ripple_duration_out', 'ripple_func_in', 'ripple_func_out', 'ripple_rad_default', 'ripple_scale', 'set_center_x', 'set_center_y', 'set_disabled', 'set_right', 'set_top', 'setter', 'size', 'size_hint', 'size_hint_max', 'size_hint_max_x', 'size_hint_max_y', 'size_hint_min', 'size_hint_min_x', 'size_hint_min_y', 'size_hint_x', 'size_hint_y', 'specific_secondary_text_color', 'specific_text_color', 'start_ripple', 'state', 'text_color', 'theme_cls', 'theme_text_color', 'to_local', 'to_parent', 'to_widget', 'to_window', 'top', 'trigger_action', 'uid', 'unbind', 'unbind_uid', 'unregister_event_types', 'user_font_size', 'walk', 'walk_reverse', 'width', 'x', 'y']
|
||||
['_ButtonBehavior__state_event', '_ButtonBehavior__touch_time', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__events__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__metaclass__', '__module__', '__ne__', '__new__', '__proxy_getter', '__proxy_setter', '__pyx_vtable__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_apply_transform', '_call_get_bg_color_disabled', '_call_get_bg_color_down', '_context', '_current_button_color', '_disabled_count', '_disabled_value', '_do_press', '_do_release', '_doing_ripple', '_fading_out', '_finish_init', '_finishing_ripple', '_get_md_bg_color_disabled', '_get_md_bg_color_down', '_kwargs_applied_init', '_md_bg_color_disabled', '_md_bg_color_down', '_no_ripple_effect', '_proxy_ref', '_ripple_rad', '_set_color', '_set_ellipse', '_set_md_bg_color_disabled', '_set_md_bg_color_down', '_trigger_layout', '_update_color', '_update_specific_text_color', '_walk', '_walk_reverse', 'a', 'add_widget', 'always_release', 'anchor_x', 'anchor_y', 'anim_complete', 'apply_class_lang_rules', 'apply_property', 'b', 'background_hue', 'background_palette', 'bind', 'cancel_event', 'canvas', 'center', 'center_x', 'center_y', 'children', 'clear_widgets', 'cls', 'collide_point', 'collide_widget', 'create_property', 'dec_disabled', 'device_ios', 'disabled', 'dispatch', 'dispatch_children', 'dispatch_generic', 'do_layout', 'events', 'export_as_image', 'export_to_png', 'fade_out', 'fbind', 'finish_ripple', 'font_name', 'font_size', 'funbind', 'g', 'get_center_x', 'get_center_y', 'get_disabled', 'get_parent_window', 'get_property_observers', 'get_right', 'get_root_window', 'get_top', 'get_window_matrix', 'getter', 'height', 'icon', 'id', 'ids', 'inc_disabled', 'is_event_type', 'last_touch', 'lay_canvas_instructions', 'layout_hint_with_bounds', 'lbl_txt', 'md_bg_color', 'md_bg_color_disabled', 'md_bg_color_down', 'min_state_time', 'on_disabled', 'on_kv_post', 'on_md_bg_color', 'on_opacity', 'on_press', 'on_release', 'on_touch_down', 'on_touch_move', 'on_touch_up', 'opacity', 'opposite_colors', 'padding', 'parent', 'pos', 'pos_hint', 'properties', 'property', 'proxy_ref', 'r', 'radius', 'register_event_type', 'remove_widget', 'right', 'ripple_alpha', 'ripple_color', 'ripple_duration_in_fast', 'ripple_duration_in_slow', 'ripple_duration_out', 'ripple_func_in', 'ripple_func_out', 'ripple_rad_default', 'ripple_scale', 'set_center_x', 'set_center_y', 'set_disabled', 'set_right', 'set_top', 'setter', 'size', 'size_hint', 'size_hint_max', 'size_hint_max_x', 'size_hint_max_y', 'size_hint_min', 'size_hint_min_x', 'size_hint_min_y', 'size_hint_x', 'size_hint_y', 'specific_secondary_text_color', 'specific_text_color', 'start_ripple', 'state', 'text_color', 'theme_cls', 'theme_text_color', 'to_local', 'to_parent', 'to_widget', 'to_window', 'top', 'trigger_action', 'uid', 'unbind', 'unbind_uid', 'unregister_event_types', 'user_font_size', 'walk', 'walk_reverse', 'width', 'x', 'y']
|
||||
['_ButtonBehavior__state_event', '_ButtonBehavior__touch_time', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__events__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__metaclass__', '__module__', '__ne__', '__new__', '__proxy_getter', '__proxy_setter', '__pyx_vtable__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_apply_transform', '_call_get_bg_color_disabled', '_call_get_bg_color_down', '_context', '_current_button_color', '_disabled_count', '_disabled_value', '_do_press', '_do_release', '_doing_ripple', '_fading_out', '_finish_init', '_finishing_ripple', '_get_md_bg_color_disabled', '_get_md_bg_color_down', '_kwargs_applied_init', '_md_bg_color_disabled', '_md_bg_color_down', '_no_ripple_effect', '_proxy_ref', '_ripple_rad', '_set_color', '_set_ellipse', '_set_md_bg_color_disabled', '_set_md_bg_color_down', '_trigger_layout', '_update_color', '_update_specific_text_color', '_walk', '_walk_reverse', 'a', 'add_widget', 'always_release', 'anchor_x', 'anchor_y', 'anim_complete', 'apply_class_lang_rules', 'apply_property', 'b', 'background_hue', 'background_palette', 'bind', 'cancel_event', 'canvas', 'center', 'center_x', 'center_y', 'children', 'clear_widgets', 'cls', 'collide_point', 'collide_widget', 'create_property', 'dec_disabled', 'device_ios', 'disabled', 'dispatch', 'dispatch_children', 'dispatch_generic', 'do_layout', 'events', 'export_as_image', 'export_to_png', 'fade_out', 'fbind', 'finish_ripple', 'font_name', 'font_size', 'funbind', 'g', 'get_center_x', 'get_center_y', 'get_disabled', 'get_parent_window', 'get_property_observers', 'get_right', 'get_root_window', 'get_top', 'get_window_matrix', 'getter', 'height', 'icon', 'id', 'ids', 'inc_disabled', 'is_event_type', 'last_touch', 'lay_canvas_instructions', 'layout_hint_with_bounds', 'lbl_txt', 'md_bg_color', 'md_bg_color_disabled', 'md_bg_color_down', 'min_state_time', 'on_disabled', 'on_kv_post', 'on_md_bg_color', 'on_opacity', 'on_press', 'on_release', 'on_touch_down', 'on_touch_move', 'on_touch_up', 'opacity', 'opposite_colors', 'padding', 'parent', 'pos', 'pos_hint', 'properties', 'property', 'proxy_ref', 'r', 'radius', 'register_event_type', 'remove_widget', 'right', 'ripple_alpha', 'ripple_color', 'ripple_duration_in_fast', 'ripple_duration_in_slow', 'ripple_duration_out', 'ripple_func_in', 'ripple_func_out', 'ripple_rad_default', 'ripple_scale', 'set_center_x', 'set_center_y', 'set_disabled', 'set_right', 'set_top', 'setter', 'size', 'size_hint', 'size_hint_max', 'size_hint_max_x', 'size_hint_max_y', 'size_hint_min', 'size_hint_min_x', 'size_hint_min_y', 'size_hint_x', 'size_hint_y', 'specific_secondary_text_color', 'specific_text_color', 'start_ripple', 'state', 'text_color', 'theme_cls', 'theme_text_color', 'to_local', 'to_parent', 'to_widget', 'to_window', 'top', 'trigger_action', 'uid', 'unbind', 'unbind_uid', 'unregister_event_types', 'user_font_size', 'walk', 'walk_reverse', 'width', 'x', 'y']
|
||||
|
Loading…
Reference in New Issue