es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo cambiar la propiedad font_name de las etiquetas en Kivy?

Estoy tratando de crear una etiqueta, especificar un texto para ella y usar una fuente personalizada, utilizando la propiedad “font_name” en el archivo python, no en el archivo kv. Aquí está el código:

Código python:

some_text = bidi.algorithm.get_display(
    arabic_reshaper.reshape(<some_persian_text>))

MDLabel(text=some_text, size_hint=(None, None), font_name="fonts/Shabnam-Bold", size=(300, 100), pos_hint={'center_x': 0.5, 'center_y': .8})

Archivo kv correspondiente:

<somescreen>:
    name: 'some_screen'
    AnchorLayout:
        id: main_layout
        size: self.width, self.height
        anchor_x: 'center'
        anchor_y: 'top'
        MDToolbar:
            id: main_toolbar
            title: "TITLE"
            # left_action_items: [["menu", lambda x: side_bar.set_state('open')]]
            left_action_items:[['arrow-left', lambda x: root.go_back()]]
            md_bg_color: app.theme_cls.primary_color
            elevation: 15

Como puedes ver, he configurado la Toolbar en el archivo kv y estoy tratando de renderizar otro contenido para ella de forma dinámica en python. El texto de la etiqueta está en persa (un idioma de derecha a izquierda hablado en Irán). La biblioteca bidi junto con arabic_reshaper permite que la aplicación muestre texto de derecha a izquierda. El problema es que cuando lo hago totalmente en el archivo kv (configurando el texto en python, creando la etiqueta en el archivo kv y configurando el texto y el nombre de fuente también en el archivo kv), todo funciona bien. Pero cuando lo hago de esta manera (creando y configurando el contenido de la etiqueta y la fuente en el archivo py), la fuente no funciona correctamente y muestra algo sin sentido.

¿Cómo puedo solucionar esto? Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución para este problema es asegurarse de que el archivo de fuente se cargue correctamente y esté disponible para que la aplicación lo use. Puede intentar agregar la siguiente línea de código a su archivo Python:

    from kivy.core.text import LabelBase
    LabelBase.register(name='Shabnam-Bold', fn_regular='fonts/Shabnam-Bold.ttf')
    

    Esto registrará el archivo de fuente con el renderizador de texto de Kivy y lo pondrá disponible para su uso en su aplicación. Es posible que deba ajustar la ruta al archivo de fuente para que coincida con su configuración.

    Otra cosa a verificar es la codificación del archivo de fuente en sí. Asegúrese de que admita los caracteres que está intentando mostrar.

    Finalmente, si los pasos anteriores no parecen funcionar, puede intentar usar un archivo de fuente diferente que se sepa que funciona bien con Kivy y admita los caracteres que está intentando mostrar.

Comments are closed.