@IDWLNNN

Почему текст ScrollView отображается только при определенном значении font_size?

У меня есть программа, которая парсит текст с сайта и выводит его. Но проблема в том, что когда я помещаю этот текст в ScrollView, то при тексте размером 4 страницы книги он отображается, а при тексте в 57 страниц его просто нет. Только если я меняю значение font_size на 1, только тогда отображается весь текст книги, но очевидно это не то, что мне нужно. Как решить эту проблему?

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from bs4 import BeautifulSoup
from kivy.uix.scrollview import ScrollView
import requests
    Builder.load_string('''
    
    # Define the scroll view
    <ScrollableLabel>:
        Label:
            id: label
            color: (1,1,1,1)
            font_size: 15
            text_size: self.width, None
            size_hint_y: None
            height: self.texture_size[1]
    ''')
    
    
    class MyButton(Button):
        color = (0, 0, 0, 1)
        valign = 'bottom'
        padding_y = 10
        background_color = (.93, .91, .67, 1)
        background_normal = ''
    
    
    class ScrollableLabel(ScrollView):
        pass
    
    class Box(BoxLayout):
        color = (.98, .98, .82, 1)
        orientation = "vertical"
        padding = [5, 5, 5, 5]
        spacing = 10
    
        def on_kv_post(self, widget):
    
            self.add_widget(MyButton(text='И. С. Тургенев. «Отцы и дети»', on_press=self.btn_press))
    
        def btn_press(self, instance):
            self.clear_widgets()
            sc = ScrollableLabel()
            x = 1
            data = ''
            while True:
                if x == 1:
                    url = "http://loveread.ec/read_book.php?id=12021&p=1"
                elif x < 4:
                    url = "http://loveread.ec/read_book.php?id=12021&p=" + f'{x}'
                else:
                    break
                request = requests.get(url)
                soup = BeautifulSoup(request.text, "html.parser")
                teme = soup.find_all("p", class_="MsoNormal")
    
                for temes in teme:
                    data += temes.text
                x = x + 1
            sc.ids.label.text = data
            self.add_widget(sc)
    
    
    class MyApp(App):
    
        def build(self):
            return Box()
    
    
    if __name__ == "__main__":
        MyApp().run()
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы