On va poursuivre le script précédent en connectant le bouton nouveau tirage à un tirage aléatoire de lettres.
Pour cela on va utiliser des labels que l’on remplira par des lettres non accentuées et en majuscules.
On importe random et string :
import string,random
Création des labels :
self.lettre=[]
for i in range(10):
self.lettre.append(gtk.Label(""))
table.attach(self.lettre[i], i+1, i+2, 0, 1)
for i in range(10):
self.lettre.append(gtk.Label(""))
table.attach(self.lettre[i], i+1, i+2, 0, 1)
Remplissage aléatoire :
for i in range(10):
self.lettre[i].set_text(string.ascii_uppercase[random.randint(0,25)])
self.lettre[i].set_text(string.ascii_uppercase[random.randint(0,25)])
Code complet :
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #!/usr/bin/env python # -*- coding: utf-8 -*- import pygtk pygtk.require('2.0') import gtk import string,random class ChiffresEtLettres: def delete_event(self, widget, event, data=None): print "delete event occurred" return False def destroy(self, widget, data=None): print "destroy signal occurred" gtk.main_quit() def __init__(self): print "_init_" # création de la fenêtre self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("Des Chiffres et des Lettres") self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy) self.window.set_border_width(100) table=gtk.Table(11,3,False) self.window.add(table) #labels tirages self.lettre=[] for i in range(10): self.lettre.append(gtk.Label("")) table.attach(self.lettre[i], i+1, i+2, 0, 1) # bouton nouveau tirage button = gtk.Button("Nouveau tirage") button.connect("clicked", self.tiragelettres, None) table.attach(button, 0, 1, 0, 1) #tout montrer self.window.show_all() self.window.show() def main(self): gtk.main() def tiragelettres(self, widget, data=None): print "Nouveau tirage de lettres" for i in range(10): self.lettre[i].set_text(string.ascii_uppercase[random.randint(0,25)]) if __name__ == "__main__": cl = ChiffresEtLettres() cl.main() |
Ce qui donne :
On voit que les tirages sont super chauds : trop de X,Y,ou Z, trop de consonnes, on verra comment améliorer ça plus tard. D’abord on va regarder comment créer un timer et le lier à une barre de progression