我怎样才能在左边对齐我的标签文本,并且在 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

如果你不设置Labelwidth,它将采用100的默认width,你的x-scrolling不会发生,直到HomeScreenwidth 宽度小于 100 像素。