Créer une page html (avec interface graphique)

Soyez le premier à donner votre avis sur cette source.

Vue 19 700 fois - Téléchargée 988 fois

Description

Ce code sert à créé facilement une page html avec un son une image et deux lignes de texte. L'interface graphique est avec WxPython, mais je pense pouvoir créé prochainement une autre interface avec Tkinter. Si vous avez des idéés d'améliorations, faite les moi parvenirs.
Le code peut parraitre un peut compliquer, mais c'est parce que, le fichier créé doit comporter des accents et autres carractères spéciaux. Or c'est assez compliquer ; cf mon code. Si vous voullez plus d'explication n'ésiter pas à laissez des messages.

Source / Exemple :

import wx
import os



#########################################
class MyMiniFrame1(wx.MiniFrame):
    def __init__(
        self, parent, title,entree, pos=wx.DefaultPosition, size=wx.DefaultSize,
        style=wx.DEFAULT_FRAME_STYLE
        ):
        self.entree=entree

        wx.MiniFrame.__init__(self, parent, -1, title, pos, size, style)
        panel = wx.Panel(self, -1)




        button1 = wx.Button(panel, -1, u"É")
        button2 = wx.Button(panel, -1, u"È")
        button3 = wx.Button(panel, -1, u"À")
        button4 = wx.Button(panel, -1, u"?")
        button5 = wx.Button(panel, -1, u"@")
        button6 = wx.Button(panel, -1, u"Ç")
        button7 = wx.Button(panel, -1, u"æ")
        button8 = wx.Button(panel, -1, u"?")
        button9 = wx.Button(panel, -1, u"©")
        button10 = wx.Button(panel, -1, u"®")
        boutonqui= wx.Button(panel, -1, u"Fermer cette fenêtre")

        self.Bind(wx.EVT_BUTTON, self.pb1, button1)
        self.Bind(wx.EVT_BUTTON, self.pb2, button2)
        self.Bind(wx.EVT_BUTTON, self.pb3, button3)
        self.Bind(wx.EVT_BUTTON, self.pb4, button4)
        self.Bind(wx.EVT_BUTTON, self.pb5, button5)
        self.Bind(wx.EVT_BUTTON, self.pb6, button6)
        self.Bind(wx.EVT_BUTTON, self.pb7, button7)
        self.Bind(wx.EVT_BUTTON, self.pb8, button8)
        self.Bind(wx.EVT_BUTTON, self.pb9, button9)
        self.Bind(wx.EVT_BUTTON, self.pb10, button10)
        self.Bind(wx.EVT_BUTTON, self.qu, boutonqui)
        

        sizer = wx.BoxSizer(wx.VERTICAL)

        lign1 = wx.BoxSizer(wx.HORIZONTAL)
        lign1.Add(button1, 0, wx.ALL|wx.CENTER, 10)
        lign1.Add(button2, 0, wx.ALL|wx.CENTER, 10)
        lign1.Add(button3, 0, wx.ALL|wx.CENTER, 10)
        lign1.Add(button4, 0, wx.ALL|wx.CENTER, 10)
        lign1.Add(button5, 0, wx.ALL|wx.CENTER, 10)

        lign2 = wx.BoxSizer(wx.HORIZONTAL)
        lign2.Add(button6, 0, wx.ALL|wx.CENTER, 10)
        lign2.Add(button7, 0, wx.ALL|wx.CENTER, 10)
        lign2.Add(button8, 0, wx.ALL|wx.CENTER, 10)
        lign2.Add(button9, 0, wx.ALL|wx.CENTER, 10)
        lign2.Add(button10, 0, wx.ALL|wx.CENTER, 10)

        sizer.Add(lign1, 0, wx.ALL|wx.CENTER, 10)
        sizer.Add(lign2, 0, wx.ALL|wx.CENTER, 10)
        sizer.Add(boutonqui, 0, wx.ALL|wx.CENTER, 10)

        panel.SetSizer(sizer)
        panel.Layout()

    def pb1(self, evt):
        global carr
        carr=u"É"
        self.fonc()
    def pb2(self, evt):
        global carr
        carr=u"È"
        self.fonc()
    def pb3(self, evt):
        global carr
        carr=u"À"
        self.fonc()
    def pb4(self, evt):
        global carr
        carr=u"?"
        self.fonc()
    def pb5(self, evt):
        global carr
        carr=u"@"
        self.fonc()
    def pb6(self, evt):
        global carr
        carr=u"Ç"
        self.fonc()
    def pb7(self, evt):
        global carr
        carr=u"æ"
        self.fonc()
    def pb8(self, evt):
        global carr
        carr=u"?"
        self.fonc()
    def pb9(self, evt):
        global carr
        carr=u"©"
        self.fonc()
    def pb10(self, evt):
        global carr
        carr=u"®"
        self.fonc()

    def fonc(self):
        global carr
        tempore=self.entree.GetValue()
        self.entree.Clear()
        self.entree.WriteText(tempore+carr)

    def qu(self, evt):
        self.Destroy()

        



class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title,size=((500, 600)))
        global choix1,choix2,b11,b12,chso,chim,entree_1,entree_2,entree_3,fichier,fichier2

        



        menuBar = wx.MenuBar()

         
        menu = wx.Menu()

        
        menu.Append(1,u"Quitter\tAlt-F2", "Quitter le programme")

        self.Bind(wx.EVT_MENU, self.quiter, id=1)

        menuBar.Append(menu, u"Fichier")

        menu2 = wx.Menu()
        menu2.Append(2,u"Aide", "Obtenir de l'aide")
        menu2.AppendSeparator()
        menu2.Append(3,u"À propos de ...", u"Imformation générale")

        self.Bind(wx.EVT_MENU, self.aide, id=2)
        self.Bind(wx.EVT_MENU, self.propo, id=3)

        menuBar.Append(menu2, u"Aide")
        
        self.SetMenuBar(menuBar)


        self.CreateStatusBar()


        choix1=0
        choix2=0
        chso=0
        chim=0
        fichier=''
        fichier2=''


        
        panel = wx.Panel(self)

        
        texta=wx.StaticText(panel, -1, u"Voici un programme qui permet de créé une page html avec différant élements")
        texta.SetSize(texta.GetBestSize())

        box = wx.StaticBox(panel, -1, u"Son")
        bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)
        texta1 = wx.StaticText(panel, -1, u"\nObtion n°1 : le son                             \n\n")
        c1 = wx.CheckBox(panel, -1, u"Insérer un son")
        textb1 = wx.StaticText(panel, -1, "\n")
        b11 = wx.Button(panel, -1, u"Choisir un son")
        b11.Enable(False)
        bsizer.Add(texta1, 0, wx.CENTER, 10)
        bsizer.Add(c1, 0,wx.CENTER, 10)
        bsizer.Add(textb1, 0,wx.CENTER, 10)
        bsizer.Add(b11, 0,wx.CENTER, 10)



        box1 = wx.StaticBox(panel, -1, u"Image")
        bsizer1 = wx.StaticBoxSizer(box1, wx.VERTICAL)
        texta2 = wx.StaticText(panel, -1, u"\nObtion n°2 : l'image                             \n\n")
        c2 = wx.CheckBox(panel, -1, u"Insérer une image")
        textb2 = wx.StaticText(panel, -1, "\n")
        b12 = wx.Button(panel, -1, u"Choisir une image")
        b12.Enable(False)
        bsizer1.Add(texta2, 0, wx.CENTER, 10)
        bsizer1.Add(c2, 0,wx.CENTER, 10)
        bsizer1.Add(textb2, 0,wx.CENTER, 10)
        bsizer1.Add(b12, 0,wx.CENTER, 10)

        box2 = wx.StaticBox(panel, -1, u"Titre et message")
        bsizer2 = wx.StaticBoxSizer(box2, wx.VERTICAL)
        texta3 = wx.StaticText(panel, -1, u"\nObtion n°3 : l'insertion du titre et de deux lignes d'information                                            \n\n                                                                         Titre :")
        entree_1= wx.TextCtrl(panel, -1, u"Titre", size=(200,-1))
        textb3 = wx.StaticText(panel, -1, u"\nLigne n°1 (en gras) :")
        sep1=wx.StaticText(panel, -1, u"   ")
        sep2=wx.StaticText(panel, -1, u"   ")
        sep3=wx.StaticText(panel, -1, u"   ")
        entree_2= wx.TextCtrl(panel, -1, u"Ligne 1", size=(200,-1))
        textc3 = wx.StaticText(panel, -1, u"\nLigne n°2 (normal) :")
        entree_3= wx.TextCtrl(panel, -1, u"Ligne 2", size=(200,-1))
        ben1=wx.Button(panel, -1, u"Insérer un carractère spécial")
        ben2=wx.Button(panel, -1, u"Insérer un carractère spécial")
        ben3=wx.Button(panel, -1, u"Insérer un carractère spécial")
        
        boit7 = wx.BoxSizer(wx.HORIZONTAL)
        boit7.Add(entree_1, 0,wx.CENTER, 10)
        boit7.Add(sep1, 0,wx.CENTER, 10)
        boit7.Add(ben1, 0,wx.CENTER, 10)

        boit8 = wx.BoxSizer(wx.HORIZONTAL)
        boit8.Add(entree_2, 0,wx.CENTER, 10)
        boit8.Add(sep2, 0,wx.CENTER, 10)
        boit8.Add(ben2, 0,wx.CENTER, 10)

        boit9 = wx.BoxSizer(wx.HORIZONTAL)
        boit9.Add(entree_3, 0,wx.CENTER, 10)
        boit9.Add(sep3, 0,wx.CENTER, 10)
        boit9.Add(ben3, 0,wx.CENTER, 10)

        
        bsizer2.Add(texta3, 0, wx.CENTER, 10)
        bsizer2.Add(boit7, 0,wx.CENTER, 10)
        bsizer2.Add(textb3, 0,wx.CENTER, 10)
        bsizer2.Add(boit8, 0,wx.CENTER, 10)
        bsizer2.Add(textc3, 0,wx.CENTER, 10)
        bsizer2.Add(boit9, 0,wx.CENTER, 10)

        
        b1 = wx.Button(panel, -1, u"Quitter le programme")
        b2 = wx.Button(panel, -1, u"Créé le fichier")
        



        
        self.Bind(wx.EVT_BUTTON, self.quiter, b1)
        self.Bind(wx.EVT_BUTTON, self.cree, b2)        
        self.Bind(wx.EVT_CHECKBOX, self.choi1, c1)
        self.Bind(wx.EVT_CHECKBOX, self.choi2, c2)
        self.Bind(wx.EVT_BUTTON, self.imson, b11)
        self.Bind(wx.EVT_BUTTON, self.imima, b12)
        self.Bind(wx.EVT_BUTTON, self.fonc1, ben1)
        self.Bind(wx.EVT_BUTTON, self.fonc2, ben2)
        self.Bind(wx.EVT_BUTTON, self.fonc3, ben3)


        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(texta, 0, wx.ALL|wx.CENTER, 10)

        boit = wx.BoxSizer(wx.HORIZONTAL)
        
        boit.Add(bsizer, 0, wx.ALL, 10)
        boit.Add(bsizer1, 0, wx.ALL, 10)
        sizer.Add(boit, 0, wx.ALL|wx.CENTER, 10)
        
        sizer.Add(bsizer2, 0, wx.ALL|wx.CENTER, 10)
        
        boit1 = wx.BoxSizer(wx.HORIZONTAL)
        
        boit1.Add(b1, 0, wx.ALL, 10)
        boit1.Add(b2, 0, wx.ALL, 10)
        sizer.Add(boit1, 0, wx.ALL|wx.CENTER, 10)
        panel.SetSizer(sizer)
        panel.Layout()


        self.Centre()


    def quiter(self, evt):
        self.Close()


    def choi1(self, evt):
        global choix1,b11
        if choix1==0:
            b11.Enable(True)
            choix1=1
        else :
            b11.Enable(False)
            choix1=0

    def choi2(self, evt):
        global choix2,b12
        if choix2==0:
            b12.Enable(True)
            choix2=1
        else :
            b12.Enable(False)
            choix2=0


    def imson(self,evt):
        global chso,fichier
        dlg = wx.FileDialog(
            self, message=u"Importer un fichier audio", defaultDir=os.getcwd(), 
            defaultFile="", wildcard=u"Fichier audio Windows Média (*.wma)|*.wma|Tout les fichiers|*.*", style=wx.OPEN
            )


        if dlg.ShowModal() == wx.ID_OK:
            
            fichier = dlg.GetPaths()
            fichier = fichier[0]
            nombre = len(fichier)-4
            if fichier[nombre:].lower()==u'.wma':
                chso=1
            else :
                dia=wx.MessageDialog(self, u"Vous n'avez pas sélectionner de fichier audio valide.", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
                             pos = wx.DefaultPosition)
                valeur = dia.ShowModal()
                chso=0

    def imima(self,evt):
        global chim,fichier2
        dlg = wx.FileDialog(
            self, message=u"Importer un fichier image", defaultDir=os.getcwd(), 
            defaultFile="", wildcard=u"Fichier JPG (*.JPG)|*.JPG|Fichier PNG (*.PNG)|*.PNG|Fichier bmp (*.bmp)|*.bmp|Tout les fichiers|*.*", style=wx.OPEN
            )


        if dlg.ShowModal() == wx.ID_OK:
            
            fichier2 = dlg.GetPaths()
            fichier2 = fichier2[0]
            nombre = len(fichier2)-4
            if fichier2[nombre:].lower()==u'.jpg' or fichier2[nombre:].lower()==u'.png' or fichier2[nombre:].lower()==u'.bmp':
                chim=1
            else :
                dia=wx.MessageDialog(self, u"Vous n'avez pas sélectionner de fichier image valide.", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
                             pos = wx.DefaultPosition)
                valeur = dia.ShowModal()
                chim=0
        

    

    def aide(self, evt):
        dia=wx.MessageDialog(self, u"Aide\n\n\nCe programme vous permet de créé une page dite html, c'est à dire\nune page Internet. Vous n'avez qu'a renter les informations demander (ce\nn'est pas compliquer !). La page html sera créé ou vous l'avez indiquer\nsur votre disque dure. Bonne utilisation !", caption = u"Aide", style = wx.OK,
                             pos = wx.DefaultPosition)
        valeur = dia.ShowModal()
        dia.Destroy()
        
    def propo(self, evt):
        dia=wx.MessageDialog(self, u"À propos de ce programme :\n\n_____________________________\n\nCréé par Aéra group.\nVersion 2.1.1 (La version 1.0 n'est pas disponible)\n\nRemerciment : à N. Pourc. (cette personne se reconnaitra !) pour m'avoir aider sur WxPython.", caption = u"À propos de ...", style = wx.OK,
                             pos = wx.DefaultPosition)
        valeur = dia.ShowModal()
        dia.Destroy()

    def fonc1(self, evt):
        win = MyMiniFrame1(self, u'Carractère spéciaux du champs "Titre"',entree_1,
                          style=wx.DEFAULT_FRAME_STYLE | wx.TINY_CAPTION_HORIZ)
        win.CenterOnParent(wx.BOTH)
        win.SetSize((500, 200)) 
        win.Show(True)

    def fonc2(self, evt):
        win = MyMiniFrame1(self, u'Carractère spéciaux du champs "Ligne n°1"',entree_2,
                          style=wx.DEFAULT_FRAME_STYLE | wx.TINY_CAPTION_HORIZ)
        win.CenterOnParent(wx.BOTH)
        win.SetSize((500, 200)) 
        win.Show(True)

    def fonc3(self, evt):
        win = MyMiniFrame1(self, u'Carractère spéciaux du champs "Ligne n°2"',entree_3,
                          style=wx.DEFAULT_FRAME_STYLE | wx.TINY_CAPTION_HORIZ)
        win.CenterOnParent(wx.BOTH)
        win.SetSize((500, 200)) 
        win.Show(True)

    def cree(self, evt):
        global chim,fichier2,chso,fichier,entree_1,entree_2,entree_3,choix2,choix1
        if entree_1.GetValue()=='':
            dia=wx.MessageDialog(self, u"Il faut obligatoirement renter un titre.", caption = u"Erreur", style = wx.OK|wx.ICON_ERROR,
                             pos = wx.DefaultPosition)
            valeur = dia.ShowModal()
        else:
            con=1
            if choix1==1 and chso==0:
                dia=wx.MessageDialog(self, u"Vous n'avez pas sélectionner de fichier son. Voullez vous continuer ?", caption = u"Question son", style = wx.YES_NO|wx.ICON_QUESTION,
                             pos = wx.DefaultPosition)
                valeur = dia.ShowModal()
                if valeur==wx.ID_NO:
                    con=0
            if con==1:
                if choix2==1 and chim==0:
                    dia=wx.MessageDialog(self, u"Vous n'avez pas sélectionner de fichier image. Voullez vous continuer ?", caption = u"Question image", style = wx.YES_NO|wx.ICON_QUESTION,
                                 pos = wx.DefaultPosition)
                    valeur = dia.ShowModal()
                    if valeur==wx.ID_NO:
                        con=0
                    else:
                        con=1
            if con==1:
                dlg = wx.FileDialog(self, message=u"Créé le fichier html", defaultDir=os.getcwd(),
                                    defaultFile="", wildcard=u"Fichier web html (*.html)|*.html", style=wx.SAVE)
                if dlg.ShowModal() == wx.ID_OK:
                    fi=dlg.GetPath()
                    outfile = open(fi, "w")
                    fil="""<HTML><HEAD>
<TITLE>%s</TITLE>
</HEAD><BODY><DIV ALIGN="center">""" % (entree_1.GetValue())
                    if choix2==1 and chim==1:
                        fil=fil+"""

<IMG SRC="%s">""" % (fichier2)
                    if choix1==1 and chso==1:
                        fil=fil+"""

<bgsound src="%s" loop="1">""" % (fichier)
                    fil=fil + """

<H2>%s</H2>
<P>%s</P>
</FORM>
</DIV></BODY></HTML>""" % (entree_2.GetValue(),entree_3.GetValue())
                    outfile.write(fil.encode("windows-1252"))
                    outfile.close()
                    
                    

                    
        

        

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, u"Créé une page html")
        self.SetTopWindow(frame)

        frame.Show(True)
        return True
        
app = MyApp(True)
app.MainLoop()

Conclusion :

Remerciment : N. Pourc. (cette personne se reconnetra) pour m'avoir aidé à débuter avec Python et WxPython.

POUR CEUX QUI DÉSIR TÉLÉCHARGER WX.PYTHON :

Allez sur le site http://www.wxpython.org/download.php et sélectionner la version correspondant à votre version de Python et à votre système d'exploitation.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
382
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
11
Ouai, c'est une petite source marrante. Peut être faudrait-il l'améliorer en essayant de consevoir un petit éditeur de texte !!! Avis au amateur !
Messages postés
336
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
8 novembre 2011
1
Tres bonne source !

J'aime beaucoup :)
Messages postés
382
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
11
Je n'ai jamais utilisé Windows 2000 mais je pense que c'est le même style que Windows xp (première édition). Là je suis sous Windows xp édition médi center ==> Le style de Windows à été amélioré dans cette version ceux qui me donne cette couleur de font de frame et de bouton. Plusieurs style sont à télécharger sur http://www.crystalxp.net/galerie/fr.cat.3.htm
Messages postés
1
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
26 avril 2007

bonjour,
merci pour le code, l'IHM est sympa.
Dit moi, comment fait tu pour avoir un bel aspect comme ca (boutons bleutés, fond gris et pas marrond...). Quand j'execute ton script sur ma machine c'est moins beau :( , c'est plus style win2000
Messages postés
382
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
11
Pour les personnes qui ne souhaite que le script de la page html

____________________________________

<HTML><HEAD>
<TITLE>Titre de la page</TITLE>
</HEAD>






Ligne 1

Ligne 2


</FORM>

</HTML>

_____________________________

Bien entendu, if faut que l'image "Image1.png" et le fichier son "Son.wma" soit dans le même dossier que la page html.

______
Aéra group
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.