我如何在左边对齐我的标签文本,仍然有x轴滚动在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滚动将不会发生,直到HomeScreenwidth得到小于100像素宽。

最新更新