How do I change the size of the BoxLayout widget so that it scrolls vertically when more and more content is added to it? You can run the script below but keep adding more text and click send in order to see the behavior.
Also if you can, i'm also trying to clear the input field messageInput.text
after the text is sent for some reason widget.clear_widgets() does nothing.
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.core.window import Window
import datetime as dt
from kivy.uix.scrollview import ScrollView
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
Window.clearcolor = (252, 235, 233, 0)
class NotificationMsgs(BoxLayout):
orientation = 'vertical'
spacing = 10
padding = [50, 10, 50, 10]
def __init__(self, **kwargs):
super(NotificationMsgs, self).__init__(**kwargs)
selectMsgsList = ['default dummy text']
selectCreatedList = ['2017-08-10 00:00:00']
notifBox = BoxLayout(orientation='vertical')
# notifBox.bind(minimum_height=notifBox.setter('height'))
notifScrlv = ScrollView(size_hint=(1,1), do_scroll_x=False, do_scroll_y=True)
notifScrlv.add_widget(notifBox)
r = 0
for _ in zip(selectMsgsList, selectCreatedList):
myMessage = Label(text="[color=000000]" + selectMsgsList[r] + "[/color]", markup=True)
dateCreated = Label(text="[color=000000]" + selectCreatedList[r] + "[/color]", markup=True)
notifBox.add_widget(myMessage)
notifBox.add_widget(dateCreated)
r += 1
self.add_widget(notifScrlv)
messageInput = TextInput(hint_text='type message...', multiline=True, size_hint_y=None, height=120, padding=30)
self.add_widget(messageInput)
def send_notification(self):
createdDatetimeText = dt.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
for _ in zip(selectMsgsList, selectCreatedList):
myMessage = Label(text="[color=000000]" + messageInput.text + "[/color]", markup=True)
dateCreated = Label(text="[color=000000]" + createdDatetimeText + "[/color]", markup=True)
# messageInput.clear_widgets()
notifBox.canvas.ask_update()
notifScrlv.canvas.ask_update()
notifBox.add_widget(myMessage)
notifBox.add_widget(dateCreated)
self.add_widget(Button(text='send', font_size=40, size_hint_y=None, height=120, on_press=send_notification, background_color=[0,0,1,1], border=[0,1,1,1]))
class NotificationDemoApp(App):
def build(self):
return NotificationMsgs()
def on_pause(self):
return True
# if __name__ == '__main__':
NotificationDemoApp().run()