Vue d'ensemble

Kivy 2.0, publié le 8 février 2021, abandonne le support de Python 2 et introduit un nouveau backend de fenêtrage. C'est une version de modernisation majeure du framework multi-plateforme.

Fonctionnalités principales

Python 3 uniquement

Kivy 2.0 requiert Python 3.6 au minimum. L'abandon de Python 2 a permis de nettoyer le code base, d'utiliser les f-strings, les annotations de type et les fonctionnalités modernes de l'écosystème Python.

python
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label

class Compteur(App):
    def build(self):
        self.compte = 0
        layout = BoxLayout(orientation='vertical')

        self.label = Label(
            text=f'Compteur : {self.compte}',
            font_size='32sp',
        )
        bouton = Button(
            text='Incrémenter',
            on_press=self.incrementer,
        )

        layout.add_widget(self.label)
        layout.add_widget(bouton)
        return layout

    def incrementer(self, instance):
        self.compte += 1
        self.label.text = f'Compteur : {self.compte}'

Compteur().run()

Nouveau backend de fenêtrage

Un nouveau provider de fenêtrage basé sur SDL2 est disponible, offrant une meilleure gestion du multi-écran, du HiDPI et des événements d'entrée. Ce backend remplace progressivement les anciens providers.

python
# Configuration du backend de fenêtrage
# Dans le fichier ~/.kivy/config.ini :
# [graphics]
# window_state = visible
# width = 800
# height = 600

from kivy.config import Config

# Configuration par code
Config.set('graphics', 'width', '1024')
Config.set('graphics', 'height', '768')
Config.set('graphics', 'resizable', '1')

# Le backend SDL2 est sélectionné automatiquement
# sur les plateformes supportées (Linux, macOS, Windows)
from kivy.core.window import Window
print(f'Taille : {Window.size}')
print(f'DPI : {Window.dpi}')

Sources