IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

afficher des messages sur la fenetre


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Par défaut afficher des messages sur la fenetre
    bonjour,
    dans mon programme il ya plusieurs fonctions dans les quelles il ya des messages , sauf qu'ils s'affichent sur la console.
    je voudrais savoir comment on peut faire pour les afficher dans la fenetre et si possible dans le caneva.
    merci bcp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    from Tkinter import*
    import os
    from tkFileDialog import askopenfilename
     
     
    class MenuBar(Frame):
    	def __init__(self, boss):
    		Frame.__init__(self, borderwidth=2)
    		self.E_1=Entry(self, textvariable=boss.fichname)
    		self.E_1.pack(pady=10)
     
    		self.E_2=Entry(self, textvariable=boss.filename)
    		self.E_2.pack(pady=11)
    		#self.lab=Label(self, text='MeshFile',bg='red', font=('Comic Sans MS',11)
    		#self.lab.pack(padx=1)
     
    		self.E_3=Entry(self, textvariable=boss.timemax)
    		self.E_3.pack(pady=12)
     
    		self.E_4=Entry(self, textvariable=boss.steptime)
    		self.E_4.pack(pady=13)
     
    		             #menu #
     
    		fileMenu = Menubutton(self , text = 'Files')
    		fileMenu.pack(side=LEFT,padx='2')
    		edeting = Menubutton(self , text='Edetind')
    		edeting.pack(side=LEFT,padx='4')
    		executing = Menubutton(self , text = 'executing')
    		executing.pack(side=RIGHT,padx='6')
     
    		me1= Menu(fileMenu)
    		me1.add_command(label ='Open', underline =0, command = boss.ouvrir)
    		me1.add_command(label ='Test', underline =0, command = boss.test)
     
    		me2=Menu(edeting)
    		#me2.add_command(label='Copy', underline =0, command = boss.copier)
    		#me2.add_command(label='Paste', underline =0, command = boss.coller)
    		#m2.add_command(label='Selection', underline =0, command = boss.selectionner)
     
    		me3= Menu(executing)
    		me3.add_command(label='Run', underline =0, command = boss.run)
     
    		#me1.add_command(label ='Run', underline =0, command = boss.run)
    		#me1.add_command(label = 'Close', underline =0, command = boss.quit)
     
    		fileMenu.configure(menu = me1)
    		edeting.configure(menu=me2)
    		executing.configure(menu=me3)
     
    class Application(Frame):
     
    	def __init__(self, boss =None):
    		Frame.__init__(self)
     
    		self.master.title('resolution exercice 4')
     
    		self.filename = StringVar()
    		self.fichname=StringVar()
    		self.timemax=StringVar()
    		self.steptime=StringVar()
    		self.mBar = MenuBar(self)
    		self.mBar.pack()
    		self.can = Canvas(self, bg='grey40',height=190, width=250, borderwidth= 2)
    		self.can.pack()
    		self.pack()
     
    	def ouvrir(self):
    		name = askopenfilename(filetypes = [("All", "*"),("ex4","*.m;*.c;*.txt")])
     
    		# si  l'utilisateur a bien selectionner un fichier
    		if name:
    			try:
    				fichier = open(name, "r")
    				self.filename.set(name)
    			except IOError:
    					#text1=Label(self, text='Error, this file can not be opened!', fg='red')
    					print "Error,this file can not be opened !"
    			else:
    					#text2=Label(self, text=' this file can  be opened!', fg='red')
    					print " This file can be opened"
    					fichier.close()
    		# si l'utilisateur à cliquer sur annuler
    		else:
    			print "No file selected !"
     
    	def test(self) :
    	    #fichier=self.mBar.E_1.get()
    		#E_1.pack(pady=2)
    		#fichier =E_1.get()
    		#taille = os.stat(fichier).st_size
    		fichier=self.filename.get()
    		taille=len(fichier)
     
     
    		print(fichier)
    		fich = open('%s'%(fichier),'r')
     
    		#fich=open(fichier,"r")
    		if str(fich.readline()) != '#MESH!\n' :
    			print "Error,this file is not a mesh file !"
    			entree.delete(0,taille)
    		else :
    			print "You can execute"
     
    		fich.close()
     
    	def run(self) :
    		name=self.fichname.get()
    		file = open("%s"%(name),'w')
    		file.write('#PARAM!\n')
    		file.write('Proj %s\n'%(name))
    		meshfile = self.filename.get()
    		file.write('MeshFile /python24/projet/ex4/%s\n'%(meshfile))
    		maxtime = str(self.timemax.get())
    		file.write('MaxTime %s\n'%(maxtime))
    		timestep = str(self.steptime.get())
    		file.write('TimeStep %s\n'%(timestep))
    		file.write('EOF\n')
     
    		file.close()
     
    		#fichier = self.filename.get()
    		os.system(("C:/python24/projet/%s/ex4 C:/python24/projet/ofeli/bin/ex4/%s"%(name,name)))
     
    if __name__ == '__main__':
    	app = Application()
     
    	app.mainloop()

  2. #2
    Membre expérimenté Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Le plus simple, à mon avis, c'est de créer un label avec non pas un text mais un "textvariable" et au lieu de faire "print" tu fais un set de cette variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #création du label
    self.str_Message = Tkinter.StringVar()
    self.str_Message.set(u'')
    self.lbl_Affiche_Message = Tkinter.label(self,textvariable=self.str_Message, anchor="w",fg="darksalmon",bg="ivory")
     
    # et plus loin
    self.str_Message.set(u'waooo un message')

  3. #3
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Pour le coup du textvarible au lieu du text, c'est bien mais juste avec un simple text dans le label c'est plus simple je trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #avec un textvariable
    lab1Var=tk.StringVar()
    lab1=tk.Label(root,text='1',textvariable=lab1Var)
    lab1.pack()
    #pour modifier le texte avec cette technique :
    lab1Var.set('2')
    #ce qui nous donnera un label avec pour texte : 2
     
    #Maintenant la technique "feignasse"
    lab2=tk.Label(root,text='1')
    lab2.pack()
    #pour modifier le texte avec cette technique :
    lab2['text']='2'
    #ce qui nous donnera un label avec pour texte : 2
    Sinon Gaillac, je vois que pour les chaînes de texte tu utilise un u devant, c'est quoi la différence avec une chaîne sans u devant

  4. #4
    Membre expérimenté Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    C'est une chaîne au format Unicode.
    Je travaille pour une appli qui tourne sous Windows et sous Unix et c'est important pour moi d'être sûr de ce qui se balade dans mon code.
    Donc en mettant le u devant, j'écris une chaîne unicode qui sera la même pour tous (au niveau des accents).

    Sinon, text ou textVar, ça revient au même, c'est juste la "philosophie" qui est différente (enfin c'est un grand mot):
    avec le textvar, je modifie la variable
    avec text tu modifie le label.

    Mais bon, on parle de bibliothèque graphique, donc ce qui compte c'est le résultat. La pseudo phylo..

Discussions similaires

  1. Afficher des messages sur un server log
    Par sheridan08 dans le forum Logging
    Réponses: 5
    Dernier message: 13/06/2014, 17h56
  2. Réponses: 5
    Dernier message: 07/06/2006, 12h11
  3. [Struts] Comment afficher des messages de confirmation
    Par vallica dans le forum Struts 1
    Réponses: 8
    Dernier message: 28/04/2006, 14h25
  4. Réponses: 2
    Dernier message: 19/12/2005, 20h11
  5. Afficher des images sur une grille
    Par Coussati dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/10/2005, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo