Scrollview将一侧填充得比另一侧多(Python Kivy)
在kv语言中,有没有一种方法可以将scrollview小部件的一侧填充得比另一侧多 下面是一个可运行的示例 Python代码:Scrollview将一侧填充得比另一侧多(Python Kivy),python,kivy,Python,Kivy,在kv语言中,有没有一种方法可以将scrollview小部件的一侧填充得比另一侧多 下面是一个可运行的示例 Python代码: from kivy.app import App # kivy.require("1.10.0") from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition from kivy.uix.button import Butto
from kivy.app import App
# kivy.require("1.10.0")
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.uix.scrollview import ScrollView
from kivy.properties import StringProperty, ObjectProperty, NumericProperty
class ScrollableLabel(ScrollView):
text = "blah blah blah"
class AnotherScreen(Screen):
pass
class BackHomeWidget(Widget):
pass
class MainScreen(Screen):
pass
class ScreenManagement(ScreenManager):
pass
presentation = Builder.load_file("Test_Running_Console.kv")
class MainApp(App):
def build(self):
return presentation
if __name__ == "__main__":
MainApp().run()
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
ScreenManagement:
transition: FadeTransition()
MainScreen:
AnotherScreen:
<SmallNavButton@Button>:
font_size: 32
size: 125, 50
color: 0,1,0,1
<MedButton@Button>:
font_size: 30
size_hint: 0.25, 0.1
color: 0,1,0,1
<BackHomeWidget>:
SmallNavButton:
on_release: app.root.current = "main"
text: "Home"
pos: root.x, root.top - self.height
<ScrollableLabel>:
Label:
id: dataentryinstructions
text: root.text
font_size: 20
text_size: self.width, None
size_hint_y: None
height: self.texture_size[1]
padding_y: 10
padding_x: 200
<MainScreen>:
name: "main"
FloatLayout:
MedButton:
on_release: app.root.current = "newgarage"
text: "Create New"
pos_hint: {"x":0.3728, "top": 0.4}
<AnotherScreen>:
name: "newgarage"
ScrollableLabel:
BackHomeWidget:
FloatLayout:
MedButton
text: "1. Stuff"
pos_hint: {"x":0, "top": 0.75}
Kv代码:
from kivy.app import App
# kivy.require("1.10.0")
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.uix.scrollview import ScrollView
from kivy.properties import StringProperty, ObjectProperty, NumericProperty
class ScrollableLabel(ScrollView):
text = "blah blah blah"
class AnotherScreen(Screen):
pass
class BackHomeWidget(Widget):
pass
class MainScreen(Screen):
pass
class ScreenManagement(ScreenManager):
pass
presentation = Builder.load_file("Test_Running_Console.kv")
class MainApp(App):
def build(self):
return presentation
if __name__ == "__main__":
MainApp().run()
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
ScreenManagement:
transition: FadeTransition()
MainScreen:
AnotherScreen:
<SmallNavButton@Button>:
font_size: 32
size: 125, 50
color: 0,1,0,1
<MedButton@Button>:
font_size: 30
size_hint: 0.25, 0.1
color: 0,1,0,1
<BackHomeWidget>:
SmallNavButton:
on_release: app.root.current = "main"
text: "Home"
pos: root.x, root.top - self.height
<ScrollableLabel>:
Label:
id: dataentryinstructions
text: root.text
font_size: 20
text_size: self.width, None
size_hint_y: None
height: self.texture_size[1]
padding_y: 10
padding_x: 200
<MainScreen>:
name: "main"
FloatLayout:
MedButton:
on_release: app.root.current = "newgarage"
text: "Create New"
pos_hint: {"x":0.3728, "top": 0.4}
<AnotherScreen>:
name: "newgarage"
ScrollableLabel:
BackHomeWidget:
FloatLayout:
MedButton
text: "1. Stuff"
pos_hint: {"x":0, "top": 0.75}
#:导入FadeTransition kivy.uix.screenmanager.FadeTransition
屏幕管理:
转换:FadeTransition()
主屏幕:
另一屏幕:
:
字体大小:32
尺码:125,50
颜色:0,1,0,1
:
字体大小:30
尺寸提示:0.25,0.1
颜色:0,1,0,1
:
小导航按钮:
发布时:app.root.current=“main”
正文:“家”
位置:根x,根顶部-自身高度
:
标签:
id:dataentryinstructions
text:root.text
字体大小:20
文本大小:self.width,无
尺寸提示:无
高度:自身纹理大小[1]
年份:10
padding_x:200
:
名称:“主要”
浮动布局:
MedButton:
发布时:app.root.current=“newgarage”
文本:“新建”
pos_提示:{“x”:0.3728,“top”:0.4}
:
名称:“新车库”
可滚动标签:
BackHomeWidget:
浮动布局:
医疗按钮
正文:“1.材料”
pos_提示:{“x”:0,“top”:0.75}
从外观上可以猜到,这个垫子的左右两侧为200,顶部和底部为10。但是如果我想把左边的垫在200,右边的垫在120怎么办
在这种情况下,我只希望scrollview占据屏幕的右半部分。(避免与按钮重叠)
如果我在Kivy文档中忽略了这一点,请原谅。从文档中可以看出,Gridlayout和BoxLayout可以接受四个填充参数(每个方向一个),但不确定如何将其合并到scrollview用例中。您可以将整个标签放在BoxLayout中,并添加具有所需宽度的空小部件
<ScrollableLabel>:
Widget:
size_hint_x: None
width: 200
ScrollView:
Label:
id: dataentryinstructions
text: root.text
font_size: 20
text_size: self.width, None
size_hint_y: None
height: self.texture_size[1]
padding_y: 10
Widget:
size_hint_x: None
width: 120
:
小装置:
大小提示:无
宽度:200
滚动视图:
标签:
id:dataentryinstructions
text:root.text
字体大小:20
文本大小:self.width,无
尺寸提示:无
高度:自身纹理大小[1]
年份:10
小装置:
大小提示:无
宽度:120
这是全部代码:
from kivy.app import App
# kivy.require("1.10.0")
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.widget import Widget
from kivy.uix.scrollview import ScrollView
from kivy.properties import StringProperty, ObjectProperty, NumericProperty
class ScrollableLabel(BoxLayout):
text = "blah blah blah"
class AnotherScreen(Screen):
pass
class BackHomeWidget(Widget):
pass
class MainScreen(Screen):
pass
class ScreenManagement(ScreenManager):
pass
presentation = Builder.load_string("""
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
ScreenManagement:
transition: FadeTransition()
MainScreen:
AnotherScreen:
<SmallNavButton@Button>:
font_size: 32
size: 125, 50
color: 0,1,0,1
<MedButton@Button>:
font_size: 30
size_hint: 0.25, 0.1
color: 0,1,0,1
<BackHomeWidget>:
SmallNavButton:
on_release: app.root.current = "main"
text: "Home"
pos: root.x, root.top - self.height
<ScrollableLabel>:
Widget:
size_hint_x: None
width: 200
ScrollView:
Label:
id: dataentryinstructions
text: root.text
font_size: 20
text_size: self.width, None
size_hint_y: None
height: self.texture_size[1]
padding_y: 10
Widget:
size_hint_x: None
width: 120
<MainScreen>:
name: "main"
FloatLayout:
MedButton:
on_release: app.root.current = "newgarage"
text: "Create New"
pos_hint: {"x":0.3728, "top": 0.4}
<AnotherScreen>:
name: "newgarage"
ScrollableLabel:
BackHomeWidget:
FloatLayout:
MedButton
text: "1. Stuff"
pos_hint: {"x":0, "top": 0.75}
""")
class MainApp(App):
def build(self):
return presentation
if __name__ == "__main__":
MainApp().run()
从kivy.app导入应用
#kivy.require(“1.10.0”)
从kivy.lang导入生成器
从kivy.uix.screenmanager导入screenmanager、Screen、FadeTransition
从kivy.uix.button导入按钮
从kivy.uix.label导入标签
从kivy.uix.boxlayout导入boxlayout
从kivy.uix.widget导入widget
从kivy.uix.scrollview导入scrollview
从kivy.properties导入StringProperty、ObjectProperty、NumericProperty
类可滚动标签(BoxLayout):
text=“诸如此类”
另一类屏幕(屏幕):
通过
类BackHomeWidget(小部件):
通过
类主屏幕(屏幕):
通过
类屏幕管理(屏幕管理器):
通过
演示文稿=生成器。加载字符串(“”)
#:导入FadeTransition kivy.uix.screenmanager.FadeTransition
屏幕管理:
转换:FadeTransition()
主屏幕:
另一屏幕:
:
字体大小:32
尺码:125,50
颜色:0,1,0,1
:
字体大小:30
尺寸提示:0.25,0.1
颜色:0,1,0,1
:
小导航按钮:
发布时:app.root.current=“main”
正文:“家”
位置:根x,根顶部-自身高度
:
小装置:
大小提示:无
宽度:200
滚动视图:
标签:
id:dataentryinstructions
text:root.text
字体大小:20
文本大小:self.width,无
尺寸提示:无
高度:自身纹理大小[1]
年份:10
小装置:
大小提示:无
宽度:120
:
名称:“主要”
浮动布局:
MedButton:
发布时:app.root.current=“newgarage”
文本:“新建”
pos_提示:{“x”:0.3728,“top”:0.4}
:
名称:“新车库”
可滚动标签:
BackHomeWidget:
浮动布局:
医疗按钮
正文:“1.材料”
pos_提示:{“x”:0,“top”:0.75}
""")
类主应用程序(应用程序):
def生成(自):
回执
如果名称=“\uuuuu main\uuuuuuuu”:
MainApp().run()
您可以更好地向我解释,可能是一个指示您得到什么和您想要得到什么的图形,您的代码无法复制,因为存在未定义的小部件。我已经更新了问题,以提供可运行的代码。希望通过本例可以明显看出,在scrollview文本的两侧独立控制填充。