IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec Python Discussion :

Scrolling sur widget grid


Sujet :

GTK+ avec Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Retraité de l'Informatique
    Inscrit en
    Août 2019
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité de l'Informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2019
    Messages : 36
    Points : 35
    Points
    35
    Par défaut Scrolling sur widget grid
    Bonjour,
    Non expert, j'ai essayé de reproduire les exemples lus sur la toile mais sans succès jusqu'à présent. Et surtout je ne veux pas copier bêtement sans comprendre.
    Je suis en Gtk 3 sous Python 3.
    Dans une boîte verticale( vbox), j'aligne (verticalement bien sûr) des ProgressBarr, Label, Images, boutons. Mais à un moment j'ai une grille (Grid) dont la dimension en ligne est variable.
    Si le nombre le ligne me permet de tenir dans une fenêtre physique d'écran, pas de problème. Mais si on dépasse la taille verticale de l'écran, la grid dépasse en bas sans possibilité de voir ce qui est en dessous car il n'y a pas d'ascenseur.
    Je pensais utiliser la fonction ScrolledWindow sur la seule grille (grid) mais je n'y arrive pas, il me dit qu'il ne peut contenir qu'un widget à la fois alors que je voudrais mettre le grid dans la ScrolledWindow. L'extrait qui suit n'est qu'une partie simplifiée de code, plus pour vous montrer le principe que je voudrais atteindre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		# GRID
    		########################################
    		self.Scroll = Gtk.ScrolledWindow()
     
    		self.grid = Gtk.Grid()
    		self.grid.set_column_spacing(10)
     
    		self.add(self.grid)
    Merci de votre aide.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Voici une portion de code où dans un onglet de notebook , un grid est placé avec un scroll vertical et horizontal. Si tu veux t'en inspiré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     # --------
            # ONGLET 2
            # Creation d'une grille et des boutons associés
            self.grid2 = Gtk.Grid()
            self.grid2.set_hexpand(True)
     
           #*........ ICI ON TROUVE LE CODE DE TOUS LES COMPOSANTS DU GRID 
     
            # Affichage sur la grille avec un scroll
            s_win = Gtk.ScrolledWindow()
            s_win.add_with_viewport(self.grid2)
            self.add(s_win)
            self.set_default_size(800, 300)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Retraité de l'Informatique
    Inscrit en
    Août 2019
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité de l'Informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2019
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par cyrille_b Voir le message
    Voici une portion de code où dans un onglet de notebook , un grid est placé avec un scroll vertical et horizontal. Si tu veux t'en inspiré
    Déjà merci.
    Ensuite je comprends ton code, et il fonctionne.
    Dans mon application je veux insérer un grid dans une boîte verticale, avec un grid de taille max (pixel) pour éviter de déborder de la fenêtre.
    À l'aide de ton exemple j'ai "pondu" ce petit code qui montre un bon exemple du résultat (en tous les cas bon pour moi)..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk
     
    class ScrolledGrid(Gtk.Window):
    	def __init__(self):
     
    		Gtk.Window.__init__(self, title='ScrolledGrid')
    		self.set_border_width(10)
    		self.set_default_size(320, 100)
     
    		vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
    		self.add(vbox)
     
    		L1 = Gtk.Label()
    		L1.set_text('Label n° 1')
    		vbox.pack_start(L1, True, True, 0)
     
    		grid = Gtk.Grid()
    		grid.set_hexpand(True)
    		L=0
    		for I in range (16):
    			B1 = Gtk.Button(label='Bouton 1 ligne' + str(I))
    			grid.attach(B1, 0, L, 1, 1)
    			B2 = Gtk.Button(label='Bouton 2 ligne' + str(I))
    			grid.attach(B2, 1, L, 1, 1)
    			L += 1
    		s_win = Gtk.ScrolledWindow()
     
    		s_win.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS)
    		s_win.set_min_content_height(300)
    		s_win.add(grid)
    		vbox.add(s_win)
     
    		L2 = Gtk.Label()
    		L2.set_text('Label n° 2')
    		vbox.pack_start(L2, True, True, 0)
     
    GUI = ScrolledGrid()
    GUI.connect("destroy", Gtk.main_quit)
    GUI.show_all()
    Gtk.main()
    PS: la commande add_with_viewport est dépréciée depuis 3.8. Maintenant add suffit.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Scrolling sur un TFrame
    Par Thierry65 dans le forum Delphi
    Réponses: 3
    Dernier message: 02/06/2006, 23h09
  2. un seul scroll sur toute la page
    Par manaboko dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/08/2005, 10h32
  3. [Flash MX] Actualisation scroll sur texte dynamique
    Par Gothico dans le forum Flash
    Réponses: 2
    Dernier message: 23/09/2004, 14h42
  4. Scrolling sur un TMemo
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/08/2004, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo