我怎样才能在左边对齐我的标签文本,并且在 Kivy 中仍然有 X 轴滚动?
How can I align my Label text on the left and still have X-axis scroll in Kivy?
我正在制作一个天气应用程序,其中文本结果显示在滚动视图中。我一直在测试我的应用程序,并决定我需要添加 x 轴滚动。以前我只使用 y 轴滚动,但发现一些天气结果包含较长的行,最终不适合屏幕宽度,因此,正在向下移动一条线,使格式看起来不好。
我发现在 text_size:
中没有任何设置允许单词 运行 离开屏幕而不会强制它们进入下一行。这就是我所需要的。
现在我一直在想办法让我的文本结果开始在屏幕的左边距对齐,然后允许用户滚动查看如有必要,整行。我计划在 iPad 和 iPhone 上设置 运行,这样屏幕宽度就会明显不同,我不想让字体变小,因为用户无法阅读它。
我已经尝试了一大堆不同的滚动视图布局组合,包括父项和子项,但似乎无法正确组合。
我制作了一个非常简约的可复制版本,其行为似乎与我的实际应用程序相同。我主屏幕中的滚动视图是罪魁祸首。如果有人能帮我解决这个问题,那就太好了,谢谢。
main.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
class HomeScreen(Screen):
pass
class Results1Screen(Screen):
pass
class TestApp(App):
def build(self):
return Builder.load_file("main.kv")
def on_start(self):
brief_res_1 = self.root.ids["home_screen"].ids["brief_res_1"]
brief_res_1.text = (open("text.txt", "r")).read()
TestApp().run()
main.kv
#:include kv/homescreen.kv
GridLayout:
cols: 1
FloatLayout:
ScreenManager:
size_hint: 1, .95
pos_hint: {"top": .95, "left": 1}
id: screen_manager
HomeScreen:
name: "home_screen"
id: home_screen
homescreen.kv
<HomeScreen>:
BoxLayout:
pos_hint: {"top": .7, "left": 1}
size_hint: 1, 1
size_hint_y: None
ScrollView:
Label:
id: brief_res_1
font_size: '9sp' # need to keep this at '9sp'
do_scroll_x: True
size_hint_y: None
size_hint_x: None
height: self.texture_size[1]
halign: "left" # not too sure if this should be "left"
valign: "center"
text:
text.txt
LINE 1 TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT
LINE 2 TEXT TEXT TEXT TEXT TEXT TEXT
LINE 3 TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT
你可以只替换:
height: self.texture_size[1]
与:
size: self.texture_size
如果你不设置Label
的width
,它将采用100
的默认width
,你的x-scrolling不会发生,直到HomeScreen
的 width
宽度小于 100
像素。
我正在制作一个天气应用程序,其中文本结果显示在滚动视图中。我一直在测试我的应用程序,并决定我需要添加 x 轴滚动。以前我只使用 y 轴滚动,但发现一些天气结果包含较长的行,最终不适合屏幕宽度,因此,正在向下移动一条线,使格式看起来不好。
我发现在 text_size:
中没有任何设置允许单词 运行 离开屏幕而不会强制它们进入下一行。这就是我所需要的。
现在我一直在想办法让我的文本结果开始在屏幕的左边距对齐,然后允许用户滚动查看如有必要,整行。我计划在 iPad 和 iPhone 上设置 运行,这样屏幕宽度就会明显不同,我不想让字体变小,因为用户无法阅读它。
我已经尝试了一大堆不同的滚动视图布局组合,包括父项和子项,但似乎无法正确组合。
我制作了一个非常简约的可复制版本,其行为似乎与我的实际应用程序相同。我主屏幕中的滚动视图是罪魁祸首。如果有人能帮我解决这个问题,那就太好了,谢谢。
main.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
class HomeScreen(Screen):
pass
class Results1Screen(Screen):
pass
class TestApp(App):
def build(self):
return Builder.load_file("main.kv")
def on_start(self):
brief_res_1 = self.root.ids["home_screen"].ids["brief_res_1"]
brief_res_1.text = (open("text.txt", "r")).read()
TestApp().run()
main.kv
#:include kv/homescreen.kv
GridLayout:
cols: 1
FloatLayout:
ScreenManager:
size_hint: 1, .95
pos_hint: {"top": .95, "left": 1}
id: screen_manager
HomeScreen:
name: "home_screen"
id: home_screen
homescreen.kv
<HomeScreen>:
BoxLayout:
pos_hint: {"top": .7, "left": 1}
size_hint: 1, 1
size_hint_y: None
ScrollView:
Label:
id: brief_res_1
font_size: '9sp' # need to keep this at '9sp'
do_scroll_x: True
size_hint_y: None
size_hint_x: None
height: self.texture_size[1]
halign: "left" # not too sure if this should be "left"
valign: "center"
text:
text.txt
LINE 1 TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT
LINE 2 TEXT TEXT TEXT TEXT TEXT TEXT
LINE 3 TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT
你可以只替换:
height: self.texture_size[1]
与:
size: self.texture_size
如果你不设置Label
的width
,它将采用100
的默认width
,你的x-scrolling不会发生,直到HomeScreen
的 width
宽度小于 100
像素。