0
如何更改BoxLayout小部件的大小,以便在向其添加更多内容时垂直滚动?您可以运行下面的脚本,但不断添加更多文本并单击发送以查看行为。如何在Kivy中添加更多内容时增加布局的大小?
此外,如果你可以,我也试图清除输入字段messageInput.text
之后,由于某些原因发送文本widget.clear_widgets()什么都不做。
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()
谢谢它的作品! @PalimPalim – Jeff