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.
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.
Dernière modification par Firy (04-06-2016 23:29:27)