Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 02-06-2007 02:30:19

syeric
Membre
Inscription : 31-05-2007

[pygtk] Comment faire un notebook avec bouton "fermer"

Pour les retours de https://debian-facile.org/doc:programma … utonfermer


Salut !

Alors j'ai mis un moment à le trouver ! Donc, autant que ça serve pour le prochain smile

Voici le script :

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#  notebook.py

import pygtk
pygtk.require('2.0')
import gtk

class NotebookExample:
    def add_icon_to_button(self,button):
  "Fonction pour ajouter un bouton fermer"
  #création d'une boite horizontale
        iconBox = gtk.HBox(False, 0)  
  #Création d'une image vide    
        image = gtk.Image()
  #On récupère l'icone du bouton "fermer"
        image.set_from_stock(gtk.STOCK_CLOSE,gtk.ICON_SIZE_MENU)
  #On enlève le relief au bouton (donné en attribut)
        gtk.Button.set_relief(button,gtk.RELIEF_NONE)
  #On récupère les propriétés du bouton
        settings = gtk.Widget.get_settings(button)
  #On affecte à w et h les dimensions
        (w,h) = gtk.icon_size_lookup_for_settings(settings,gtk.ICON_SIZE_MENU)
  #On modifie ces dimensions
        gtk.Widget.set_size_request(button, w + 4, h + 4)
        image.show()
  #On met l'image dans la boite
        iconBox.pack_start(image, True, False, 0)
  #On ajoute la boite dans le bouton
        button.add(iconBox)
        iconBox.show()
        return

    def create_custom_tab(self,text, notebook, frame):
        "Crée une tab customisée avec un label et un bouton fermer"
  #On crée une eventbox
        eventBox = gtk.EventBox()
  #On crée une boite horizontale
        tabBox = gtk.HBox(False, 2)
  #On crée un label "text" (text donné en attribut)
        tabLabel = gtk.Label(text)
  #On crée un bouton
        tabButton=gtk.Button()
  #On lui affecte la méthode remove_book
        tabButton.connect('clicked',self.remove_book, notebook, frame)

        #On ajoute l'image au bouton en utilisant la méthode add_icon_to_button
        self.add_icon_to_button(tabButton)
               
        eventBox.show()
        tabButton.show()
        tabLabel.show()
  #On attache label et bouton à la boite
        tabBox.pack_start(tabLabel, False)      
        tabBox.pack_start(tabButton, False)

        tabBox.show_all()
  #On ajoute la boite à l'eventbox
        eventBox.add(tabBox)
        return eventBox
   
   
    def remove_book(self, button, notebook, frame):
  "Fonction de suppression de page"
  #On supprime la page. Le secret, c'est de donner comme argument le widget enfant de la page, ici un cadre frame.
        notebook.remove(frame)
        # On actualise le widget
        notebook.queue_draw_area(0,0,-1,-1)

    def delete(self, widget, event=None):
        gtk.main_quit()
        return False

    def __init__(self):
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.connect("delete_event", self.delete)
        window.set_border_width(10)

        #On crée un nouveau notebook
        notebook = gtk.Notebook()
        window.add(notebook)
        notebook.show()

        # On ajoute quelques pages
        for i in range(5):
            page_number = i + 1
            frame = gtk.Frame("Frame %d" % page_number)
            frame.set_border_width(10)
            frame.set_size_request(100, 75)
            frame.show()
            label = gtk.Label("Dans la Frame %d" % page_number)
            frame.add(label)
            label.show()
           
            eventBox = self.create_custom_tab("Tab %d" % page_number, notebook, frame)
            notebook.append_page(frame, eventBox)
        # Page que nous verrons à l'ouverture (page 4)
        notebook.set_current_page(3)
        window.show()

def main():
    gtk.main()
    return 0

if __name__ == "__main__":

    NotebookExample()

    main()


Et vous obtenez :

qtp7p3ji.png

Voilà, si ça peut servir à quelqu'un ;-) C'est loin d'être du haut niveau mais desfois, les choses les plus simples occasionnent des heures de recherche...

A+

Syeric

Hors ligne

#2 02-06-2007 04:27:20

MaTTuX_
La Paillasse !!!
Lieu : Zoubidou-Land
Distrib. : 75 serveurs
Noyau : 3.2.0-4-amd64
(G)UI : tty et ... pas gnome en tout cas....
Inscription : 28-05-2007
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

merci pour ce petit script syeric wink

\o/ Le closedSource c'est tabou on a viendra tous à bout \o/

Hors ligne

#3 02-06-2007 10:39:48

palmito
Administrateur
Lieu : Dans la boite de gâteau!
Distrib. : bah....
Noyau : heu...
(G)UI : gné?
Inscription : 28-05-2007

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Ouep sympa smile

Hors ligne

#4 25-03-2014 11:11:13

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Quelques modifs car il ne passait plus tel quel.  smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#5 15-04-2015 18:37:10

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Quel en-tête pour cette page ?
Maintenant je demande, ça m'évitera de faire et refaire... tongue

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#6 16-04-2015 18:12:23

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

C'est un tuto ...  smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#7 16-04-2015 18:16:56

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Je m'en doutais, surtout que j'ai modifié tous ceux dans cette catégorie avec l'en-tête pour les tutos...
Je ne me rappelais plus que j'avais posé la question pour celle-là....
Le wiki va me faire perdre la boule lol

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#8 16-04-2015 18:40:23

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Mise en conformité de l'en-tête

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#9 16-04-2015 18:50:37

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

P'tits tatouillages  smile

milou a écrit :

Le wiki va me faire perdre la boule lol

Tant que tu ne perds pas la tête ...  smile


I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#10 16-04-2015 19:33:10

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

smile

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#11 30-05-2015 19:05:51

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Tatouillage de la page, ajout d'un titre, passage du script dans un bloc file config

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#12 30-05-2015 19:13:59

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

P'tite tatouille pour avoir la couleur (on est au 21ième siècle quand même  tonguebig_smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#13 30-05-2015 19:16:28

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Mais il fallait savoir le faire.... Maintenant je sais wink

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#14 30-05-2015 19:16:51

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

wink

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#15 30-05-2015 19:19:12

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Par contre, c'est normal que le retour se trouve ici et non dans le wiki ?

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#16 30-05-2015 19:21:43

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Bonne question, comme d'habitude.  smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#17 30-05-2015 19:23:24

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Et la réponse est ?

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#18 30-05-2015 19:48:05

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

à étudier  wink

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#19 30-05-2015 21:11:24

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

J'ai déplacé la discussion et laissé un lien dans le forum initial.  wink

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#20 30-05-2015 21:14:12

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

cool

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#21 30-05-2015 21:15:44

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#22 25-10-2015 05:04:45

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Tatouille et test.  smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#23 02-11-2015 19:30:50

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

Petite tatouille .... wink

Devait pas être réveillé le testeur ....

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

#24 02-11-2015 19:36:52

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

lol  Pas du tout ! J'utilise le calendrier Maya révisé par les Seigneurs du Temps !  tongue

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#25 02-11-2015 19:41:32

milou
Modo ... e
Lieu : Sur une autre planète....
Distrib. : Jessie - Stretch/Sid
Noyau : 3.16.0-4-amd64
(G)UI : Lxde
Inscription : 12-02-2015
Site Web

Re : [pygtk] Comment faire un notebook avec bouton "fermer"

[Humour On] Premier principe .... Ne jamais reconnaître ses erreurs  .....  lol lol lol  tongue [Humour Off]

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source
Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres
Dans le doute, rebootes. Si tu te tâtes, formates.
1453651422.jpg

Hors ligne

Pied de page des forums