Outils pour utilisateurs

Outils du site


atelier20230316-python-gui

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
atelier20230316-python-gui [2023/03/16 20:36] tbruyereatelier20230316-python-gui [2023/03/17 19:42] (Version actuelle) tbruyere
Ligne 45: Ligne 45:
   * QT   * QT
   * Kivy   * Kivy
 +  * Fet + Flutter(google)
   * PySimpleGUI   * PySimpleGUI
  
Ligne 63: Ligne 64:
  
 ''une API orientée objet et développée en C++, conjointement par The Qt Company et Qt Project. Qt offre des composants d'interface graphique '' wikipedia ''une API orientée objet et développée en C++, conjointement par The Qt Company et Qt Project. Qt offre des composants d'interface graphique '' wikipedia
 +
 +<note tip>La licence est semi libre</note>
  
 ===== Kivy ===== ===== Kivy =====
  
 ''Kivy est une bibliothèque libre et open source pour Python, utile pour créer des applications tactiles pourvues d'une interface utilisateur naturelle. Cette bibliothèque fonctionne sur Android, iOS, GNU/Linux, OS X et Windows. Elle est distribuée gratuitement et sous licence MIT. '' wikipedia ''Kivy est une bibliothèque libre et open source pour Python, utile pour créer des applications tactiles pourvues d'une interface utilisateur naturelle. Cette bibliothèque fonctionne sur Android, iOS, GNU/Linux, OS X et Windows. Elle est distribuée gratuitement et sous licence MIT. '' wikipedia
 +
 +===== Flet =====
 +
 +Flet est un framework qui permet de créer des applications Web, de bureau et mobiles multi-utilisateurs interactives dans votre langue préférée sans expérience préalable en développement frontend.
 +
 +Vous créez une interface utilisateur pour votre programme avec des contrôles Flet basés sur Flutter de Google.
  
 ===== Cas particulier de PySimpleGUI ===== ===== Cas particulier de PySimpleGUI =====
Ligne 215: Ligne 224:
 ===== La gestion de la grille (grid) ===== ===== La gestion de la grille (grid) =====
  
 +Cette stratégie permet de positionner chacun de vos widgets dans une ou plusieurs cellules d'une grille. La grille est organisée en lignes et en colonnes : vous pouvez, bien entendu, contrôler le nombre de lignes et de colonnes. Il est aussi à noter qu'il est possible qu'un widget occupe plusieurs cellules de la grille. Voici une capture d'écran montrant une grille un peu sophistiquée. 
  
 +===== GTK et les conteneurs =====
 +
 +GTK+ organise les widgets de manière hiérarchique, en utilisant des conteneurs. Ils sont invisibles pour l'utilisateur final et sont insérés dans une fenêtre ou placés les uns dans les autres pour mettre en page les composants. 
 +
 +https://python-gtk-3-tutorial.readthedocs.io/en/latest/layout.html
 +
 +==== Exemple GTK ====
 +
 +<code python>
 +import gi
 +
 +gi.require_version("Gtk", "3.0")
 +from gi.repository import Gtk
 +
 +
 +class MyWindow(Gtk.Window):
 +    def __init__(self):
 +        super().__init__(title="Hello World")
 +
 +        self.box = Gtk.Box(spacing=6)
 +        self.add(self.box)
 +
 +        self.button1 = Gtk.Button(label="Hello")
 +        self.button1.connect("clicked", self.on_button1_clicked)
 +        self.box.pack_start(self.button1, True, True, 0)
 +
 +        self.button2 = Gtk.Button(label="Goodbye")
 +        self.button2.connect("clicked", self.on_button2_clicked)
 +        self.box.pack_start(self.button2, True, True, 0)
 +
 +    def on_button1_clicked(self, widget):
 +        print("Hello")
 +
 +    def on_button2_clicked(self, widget):
 +        print("Goodbye")
 +
 +
 +win = MyWindow()
 +win.connect("destroy", Gtk.main_quit)
 +win.show_all()
 +Gtk.main()
 +</code>
 +
 +===== GTK Glade =====
 +
 +Glade est un outil interactif de conception d'interface graphique GTK. Il prend en charge toute la partie de gestion/génération de l'interface pour permettre au développeur de se concentrer sur le code « utile ». Glade enregistre les interfaces graphiques en générant des fichiers XML. wikipedia
 +
 +==== Exemple Glade ====
 +
 +<code python>
 +#!/usr/bin/env python3
 +# coding: utf-8
 +
 +from gi.repository import Gtk
 +
 +def when_button_is_clicked(label):
 +    '''
 +    Quand le bouton est cliqué
 +    '''
 +    label.set_text('Hello world!')
 +
 +
 +builder = Gtk.Builder()
 +builder.add_from_file('hello.glade' # Rentrez évidemment votre fichier, pas le miens!
 +
 +window = builder.get_object('main_window')
 +# Peut se faire dans Glade mais je préfère le faire ici, à vous de voir
 +window.connect('delete-event', Gtk.main_quit)
 +
 +# Le handler
 +handler = {'on_clicked': when_button_is_clicked}
 +builder.connect_signals(handler)
 +
 +window.show_all()
 +Gtk.main()
 +
 +</code>
  
 ===== Lien ===== ===== Lien =====
Ligne 230: Ligne 317:
   * https://zestedesavoir.com/tutoriels/870/des-interfaces-graphiques-en-python-et-gtk/1446_decouverte/5775_le-positionnement-grace-aux-layouts/   * https://zestedesavoir.com/tutoriels/870/des-interfaces-graphiques-en-python-et-gtk/1446_decouverte/5775_le-positionnement-grace-aux-layouts/
   * http://hmalherbe.fr/thalesm/gestclasse/documents/Premiere_NSI/Projets/Calculatrice_programmeur/calculatrice_programmeur.html   * http://hmalherbe.fr/thalesm/gestclasse/documents/Premiere_NSI/Projets/Calculatrice_programmeur/calculatrice_programmeur.html
 +  * https://zestedesavoir.com/tutoriels/870/des-interfaces-graphiques-en-python-et-gtk/1456_utilisation-avancee/5778_prise-en-main-de-glade/
 +  * https://kivy.org/doc/stable/examples/index.html
 +  * https://ressources.labomedia.org/kivy_les_fichiers_kv
 +  * https://github.com/kivy/kivy
 +  * https://github.com/kivymd/KivyMD
 +  * https://flet.dev/
 +  * https://flet.dev/docs/guides/python/getting-started
      
atelier20230316-python-gui.1678998996.txt.gz · Dernière modification : 2023/03/16 20:36 de tbruyere