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.
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.