Debian-facile

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

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

#1 28-05-2016 00:42:08

Firy
Membre
Distrib. : Debian Jessie 8.3
Noyau : 3.16.0
(G)UI : Openbox
Inscription : 22-01-2016

[Résolu] Python GTK+

Bonsoir,

Je suis depuis peu sur GTK+ avec Python, je me fais la main sur de petites applications pour le moment. Cependant une question me taraude, est-il possible de créer un widget (ou plusieurs) au moment d'un clique sur le bouton ?
Je vous mets le code et je m'explique :


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

from gi.repository import Gtk

class Discriminant(Gtk.Window):

        def __init__(self):
                ''' Fonction de construction de l'interface '''
                Gtk.Window.__init__(self, title="Calculateur de discriminant")

                lab_a = Gtk.Label('a')
                lab_b = Gtk.Label('b')
                lab_c = Gtk.Label('c')
                submit = Gtk.Button("Calculer")

                grid = Gtk.Grid()
                grid.set_column_spacing(30)
                grid.set_row_spacing(10)

                a = Gtk.Entry()
                b = Gtk.Entry()
                c = Gtk.Entry()

                grid.attach(lab_a, 1, 0, 1, 1)
                grid.attach(lab_b, 2, 0, 1, 1)
                grid.attach(lab_c, 3, 0, 1, 1)
                grid.attach(a, 1, 1, 1, 1)
                grid.attach(b, 2, 1, 1, 1)              
                grid.attach(c, 3, 1, 1, 1)
                grid.attach(submit, 4, 1, 1, 1)

                submit.connect('clicked', self.calculer, a, b, c, grid)

                self.add(grid)

        def calculer(self, submit, a, b, c, grid):
                ''' Fonction qui calcul le discriminant '''
                try:
                        a_s = (float)(a.get_text())
                except ValueError:
                        err = Gtk.Label("Erreur")
                        grid.attach(err, 1, 2, 1, 1)
                        # I've got a problem !

window = Discriminant()
window.connect('delete-event', Gtk.main_quit)
window.set_border_width(10)
window.show_all()
Gtk.main()
 



C'est une (pseudo-)application qui calcule le discriminant d'une équation du second degré, mais pour l'instant elle ne fait rien. tongue
Mon problème se situe sur l'exception de la fonction calculer(). J'aimerai, dans la mesure du possible, pouvoir créer un widget (dans le cas présent plusieurs Entry() et Label()) au moment où l'on clique sur le bouton submit (située dans l'init).

Le créer c'est pas un soucis, par contre j'aimerai l'ajouter à ma grille, et là ça coince. Je prends peut-être le problème à l'envers je ne sais pas.

Je vous remercie si quelqu'un aurait des éléments de réponses. smile

Dernière modification par Firy (05-06-2016 00:29:27)

Hors ligne

#2 05-06-2016 00:29:11

Firy
Membre
Distrib. : Debian Jessie 8.3
Noyau : 3.16.0
(G)UI : Openbox
Inscription : 22-01-2016

Re : [Résolu] Python GTK+

Problème résolu.

Il manquait un

self.show_all()

dans la fonction calculer pour afficher tous les widgets ajoutés.

Merci moi !

Hors ligne

Pied de page des forums