如何在 Kivy 的滚动视图顶部创建一个固定按钮?
How to create a fixed button on top of a scrollview in Kivy?
我正在寻找一种解决方案来在不随滚动移动的滚动视图顶部创建一个按钮。到目前为止,我尝试过的所有操作都会在滚动下方或内部创建按钮。
这是一些代码。
我正在尝试使 MDRaiSedButton 位于 ScrollView 之上,并且即使在用户滚动时也保持在该位置。
有点像在 HTML 中使用 position: fixed;
的标签
Python:
from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivymd.uix.list import ImageLeftWidget
from kivymd.uix.list import TwoLineAvatarListItem
sm = ScreenManager()
class MainScreen(Screen):
def AddToList(self):
item = TwoLineAvatarListItem(text='@name', id='id')
item.add_widget(ImageLeftWidget(source='src/avatars/cropped-Avatar-Round.png'))
self.ids.container.add_widget(item)
print("+1")
class MainApp(MDApp):
info = {}
def build(self):
self.root_widget = Builder.load_file('test.kv')
return self.root_widget
if __name__ == '__main__':
MainApp().run()
基维:
ScreenManager:
MainScreen:
<MainScreen>:
name:'main_screen'
MDRaisedButton:
text: "add"
pos_hint:{"center_x":.5, "center_y":.5}
index:10
on_release:
root.AddToList()
ScrollView:
do_scroll_x: False
do_scroll_y: True
index:5
GridLayout:
index:5
cols: 1
padding: 10
spacing: 10
# size_hint: None, None
size_hint_x: 1
size_hint_Y: None
do_scroll_x: False
id: container
为了使 Button
位于 ScrollView
的“顶部”,您只需确保它绘制在 ScrollView
之后。为此,您可以将 kv
中的 Button
移动到 ScrollView
:
之后
<MainScreen>:
name:'main_screen'
ScrollView:
do_scroll_x: False
do_scroll_y: True
index:5
GridLayout:
index:5
cols: 1
padding: 10
spacing: 10
# size_hint: None, None
size_hint_x: 1
size_hint_y: None
do_scroll_x: False
height: self.minimum_height
id: container
MDRaisedButton:
text: "add"
pos_hint:{"center_x":.5, "center_y":.5}
index:10
on_release:
root.AddToList()
我正在寻找一种解决方案来在不随滚动移动的滚动视图顶部创建一个按钮。到目前为止,我尝试过的所有操作都会在滚动下方或内部创建按钮。
这是一些代码。 我正在尝试使 MDRaiSedButton 位于 ScrollView 之上,并且即使在用户滚动时也保持在该位置。
有点像在 HTML 中使用 position: fixed;
Python:
from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivymd.uix.list import ImageLeftWidget
from kivymd.uix.list import TwoLineAvatarListItem
sm = ScreenManager()
class MainScreen(Screen):
def AddToList(self):
item = TwoLineAvatarListItem(text='@name', id='id')
item.add_widget(ImageLeftWidget(source='src/avatars/cropped-Avatar-Round.png'))
self.ids.container.add_widget(item)
print("+1")
class MainApp(MDApp):
info = {}
def build(self):
self.root_widget = Builder.load_file('test.kv')
return self.root_widget
if __name__ == '__main__':
MainApp().run()
基维:
ScreenManager:
MainScreen:
<MainScreen>:
name:'main_screen'
MDRaisedButton:
text: "add"
pos_hint:{"center_x":.5, "center_y":.5}
index:10
on_release:
root.AddToList()
ScrollView:
do_scroll_x: False
do_scroll_y: True
index:5
GridLayout:
index:5
cols: 1
padding: 10
spacing: 10
# size_hint: None, None
size_hint_x: 1
size_hint_Y: None
do_scroll_x: False
id: container
为了使 Button
位于 ScrollView
的“顶部”,您只需确保它绘制在 ScrollView
之后。为此,您可以将 kv
中的 Button
移动到 ScrollView
:
<MainScreen>:
name:'main_screen'
ScrollView:
do_scroll_x: False
do_scroll_y: True
index:5
GridLayout:
index:5
cols: 1
padding: 10
spacing: 10
# size_hint: None, None
size_hint_x: 1
size_hint_y: None
do_scroll_x: False
height: self.minimum_height
id: container
MDRaisedButton:
text: "add"
pos_hint:{"center_x":.5, "center_y":.5}
index:10
on_release:
root.AddToList()