Я могу отображать текст из текстового файла в пользовательском интерфейсе, но я не знаю, как дать каждому фрагменту текста собственную метку, чтобы я мог равномерно распределить текст на экране.
*. Py
#imported from kivy framework
from kivy.app import App
from kivymd.app import MDApp
from kivy.app import App
from kivy.uix.label import Label
from datetime import datetime
from datetime import timedelta
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.image import Image
import dictionaryData
from kivy.lang import Builder
from kivy.base import runTouchApp
import os
class Main_Screen(Screen):
pass
class Dictionary_Screen(Screen):
def on_enter(self):
self.Data()
def Data(self):
i = 0
print("trigger")
file1 = open('dict.txt','r')
for lines in file1:
i +=1
fields = lines.split(',')
print('I draw label')
Data = (fields[0], fields[1])
Title,Description = Data
# page is an object
page = dictionaryData.Dictionary(Title,Description)
page.formatData()
work = page.placeholder()
flipper = page.placeholder()
self.add_widget(Label(text = flipper, pos=(i*00, 100)))
self.ids["textFile"].text += flipper + '\n'
#class for all screens
class ScreenManagement(ScreenManager):
pass
class MainApp(MDApp):
pass
MainApp().run()
*. Кв
#:kivy 1.0
#:import hex kivy.utils.get_color_from_hex
#styles that will apply to all intences for each tag
<MDRaisedButton>:
font_size:18
<Label>:
color: 0,0,0,1
#declaring screen managers and printing them in this order
ScreenManagement:
Main_Screen:
name: "Main_Screen"
Dictionary_Screen:
name: "Dictionary_Screen"
<Main_Screen>:
Button:
text: "Dictionary"
on_release:
app.root.current = "Dictionary_Screen"
<Dictionary_Screen>:
BoxLayout:
orientation: 'vertical'
spacing: 10
padding: 50
canvas.before:
Color:
rgba: hex('#000')
Rectangle:
size: self.size
pos: self.pos
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
size_hint: 0.5, 0.5
GridLayout:
rows: 3
cols: 3
padding: 10
spacing: 10
Label:
id:textFile
color: (1,0,1,1)
Данные из текстового файла проходит через класс, где он правильно отформатирован, и, как вы можете видеть по изображению, он выглядит хорошо на экране, но все упаковано вместе, а не разделено равномерно.
Фиолетовый текст - это просто мое жесткое кодирование текста с использованием метка в файле kv, но я планирую иметь более 50 строк, которые я хочу отобразить, и жесткое кодирование каждой из них не похоже на правильный путь go.
Есть ли способ, которым я ' Могу ли я дать каждому фрагменту текста свою собственную метку или что-то еще, как расправить текст, чтобы он отображался в виде списка на экране?
Ниже приведены данные на всякий случай для справки.
Класс модуль, который импортируется и обрабатывает текстовый файл
# class
class Dictionary:
# Dunder init asigns values to varibles each time code is exacuted.
def __init__(self,title,description):
self.title = title
self.description = description
def formatData(self):
print("Title: {} Description {}".format(self.title,self.description))
def placeholder(self):
return "Title: {} Description {}".format(self.title,self.description)
dict.txt
CPU,CPU_INFORMATION
RAM,RAM_INFORMATION
SOMETHING,SOMETHING_INFORMATION