begin process at 2012 05 25 00:13:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Débutant(e)

 > 

Gestion d'une interface graphique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Gestion d'une interface graphique

jeudi 11 mars 2010 à 19:47:42 | Gestion d'une interface graphique

lilly74

Bonjour,
je débute en python et j'essaie de créer une interface graphique qui prend en entrée deux chaînes de caractères et qui les traite selon une méthode choisie par l'utilisateur. Le résultat devrait être affiché dans l'espace que j'ai réservé.
Mon problème est que je n'arrive pas à faire fonctionner cette interface.
Code Python :
import Tkinter
from Tkinter import *
import tkMessageBox

import re

from Alignement import *

class Application:

    def __init__(self):
        
        #Constructeur fenetre principale#
        fenetre = Tk()
        #fenetre.initialize()

        #Toolbar
        bar = Menu(fenetre)

        fichier = Menu(bar)
        fichier.add_command(label="Enregistrer sous...")#, command =)
        fichier.add_separator()
        fichier.add_command(label="Quitter", command = fenetre.destroy)
        methode = Menu(bar)
        methode.add_command(label="Distance de L" , command = DL)
        methode.add_command(label="Méthode 2")#, command = )
        methode.add_command(label="3 ")#, command = )
        methode.add_command(label="4")#, command = )
        methode.add_command(label="5")#, command = )
        aide = Menu(bar)
        aide.add_command(label="A propos", command = self.about)

        bar.add_cascade(label="Fichier", menu = fichier)
        bar.add_cascade(label="ChoixMéthode", menu = methode)
        bar.add_cascade(label="Aide", menu = aide)

        fenetre.config(menu=bar)

        #Entree des donnees
        fenetre.title('Alignement de séquences')
        Label(fenetre, text = "Rentrez vos séquences:", fg='black', font =("Helvetica", "20")).grid(row = 0, column = 10, sticky='NS')
        Label(fenetre, text = "Séquence1:", fg='blue', font =("Helvetica", "16", "bold italic underline")).grid(row = 2, column = 10, sticky='NS')
        fenetre.entree1 = Entry(fenetre, width =150)
        fenetre.entree1.grid(row = 3, column = 10, sticky='NS')
        fenetre.entree1.bind("<Return>", self.OnPressEnter) #la séquence est entrée définitivement lorsque l'utlisateur
                                                                #appuie sur la touche "entrée"
        seq1=fenetre.entree1.get()
        s1 = re.findall('[A-Z]+', seq1.upper()) #on ne garde que les lettres de l'alphabet
        seq1=''.join(s1)
        Label(fenetre, text = "Séquence2:", fg='blue', font =("Helvetica", "16", "bold italic underline")).grid(row = 4, column = 10, sticky='NS')
        fenetre.entree2 = Entry(fenetre, width =150)
        fenetre.entree2.grid(row =5, column = 10, sticky='NS')
        fenetre.entree2.bind("<Return>", self.OnPressEnter)
        seq2=fenetre.entree2.get()
        s2 = re.findall('[A-Z]+', seq2.upper())
        seq2=''.join(s2)
        #Commande d'alignement des séquences
        bouton = Button(fenetre, text="Choisissez la méthode pour aligner", fg='red', font=("-*-lucidatypewriter-medium-r-*-*-*-200-*-*-*-*-*-*") ).grid(row =8,column = 10, sticky='NS')

        #Place pour l'alignement des séquences
        liste = Listbox(height=3,width=50).grid(row = 9, column = 10, rowspan = 50, sticky='NSEW')
                
        fenetre.grid_rowconfigure(0, weight = 2)
        fenetre.grid_rowconfigure(2, weight = 2)
        fenetre.grid_rowconfigure(3, weight = 2)
        fenetre.grid_rowconfigure(4, weight = 2)
        fenetre.grid_rowconfigure(5, weight = 2)
        fenetre.grid_rowconfigure(8, weight = 1)
        fenetre.grid_rowconfigure(9, weight = 20)
        fenetre.grid_columnconfigure(10, weight = 2)
        fenetre.wm_state(newstate="zoomed")
        fenetre.mainloop()

    """def initialize(self):
        self.grid()
        
    def sortie(self, fenetre):
        self.fenetre.destroy()"""

    def about(self):
        tkMessageBox.showinfo("Principe", "Choisir une méthode et rentrer les deux séquences à aligner...")

    def OnPressEnter(self,event):
        #print "Séquence entrée !"


    def DL(self):
        m = len(Seq1)
        n = len(Seq2)
        T = MC(Seq1, Seq2)
        L = Alignement(Seq1, Seq2, m+1, n+1, T, [])
        print L


# démarrer le gestionnaire d'événement

if __name__ == "__main__":
    i=Application()


Je ne sais pas comment faire tourner DL et lui faire afficher les résultats dans la ListBox:
je commence à me mélanger les pinceaux

Pourriez-vous m'indiquer comment procéder svp?

Merci d'avance
 
vendredi 12 mars 2010 à 22:14:30 | Re : Gestion d'une interface graphique

lespinx

Bonsoir,
J'ai essayé de faire tourner ce code sur mon ordi et voici les erreurs que l'ai rencontrées:

1)
def OnPressEnter(self,event):
#print "Séquence entrée !"


def DL(self):
m = len(Seq1)


"OnPressEnter" n'a pas d'instruction ce qui provoque une erreur de syntaxe

2)
methode.add_command(label="Distance de L" , command = DL)
DL n'est pas reconnu, il fait partie de la classe APPLICATION il faut le préfixer
methode.add_command(label="Distance de L" , command = self.DL)

3)
def DL(self):
m = len(Seq1)
n = len(Seq2)
T = MC(Seq1, Seq2)

Les variables Seq1 et Seq2 n'existent pas (S majuscule)
S'il s'agit des variables locales utilisées dans _init_ il faut les préfixer(self) pour les rendre visibles dans la classe.

4)
T = MC(Seq1, Seq2)
Je suppose que MC fait partie de l'import Alignement ?

J'ai arrêté a ce niveau.


Cette discussion est classée dans : label, fenetre, add, grid, command


Répondre à ce message

Sujets en rapport avec ce message

Problème sur la taille de fenetre en Tkinter [ par stephane70 ] Bonjour, Je mets en place un petit programme destiné à faire un instantanée graphique des connections en cours sur le pc ainsi que les executables en Problème de variable semble t-il [Débutant] [ par asterixobelix ] Bonjour, Je débute en python comme vous allez le voir avec ma question. Je souhaite tracer un cercle dont le rayon est entré dans un champ "Entry". J WXPython, probleme avec un notebook [ par faucheuse ] Par défaut Probleme sizer dans un panel dans un notebook Bonjour à tous, J'ai créer un notebook dans lequel je met plusieurs panel ainsi que un ou pl Petit problème avec "return" [ par Uims ] Bonjour, Je suis entrain de faire un annuaire en python (avec Tk), mais j'ai un petit problème avec return dans la fonction "loc", j'aimerai que la v Modifier un wxGridBagSizer ("repaint" ?) [ par tomazi75 ] Bonjour à tous,  J'ai un wxGridBagSizer que je remplis avec des informations, mais que je n'arrive pas à mettre à jour. On ne peut utiliser le Add() q l' ohm ? [ par Nightfighter ] Bonjour tout le mondeAlors voila, je sais pas comment faire pour inserer un caracter ohm dans un fenetre:jai esseye dobtenir le code pour ce symbole:o Débutant en python... problème avec les fonctions [ par pedro ] Bonjour,Je suis sur python depuis quelques heures... en plus les languages orientés objets sont un peu nouveau pour moi... J'essaie désesperement de f utilisation de tkMessageBox [ par cynthia06 ] Bonjour a tous,Ma question va sans doute paraitre tres bete.J'essaie d'afficher un message avec tkMessageBox.Pour cela je fais:from Tkinter import *im Une scrollbar sur un Label ? [ par stephane70 ] Bonjour, Je mets en place un petit programme destiné à faire un instantanée graphique des connections en cours sur le pc ainsi que les executables en Socket : charger ip depuis fichier [ par Shinji ] Bonjour @ ttes et @ ts, voici mon pb:  j'essaye de faire une petite app client/serveur et j'aimerais pouvoir enregister l'ip/port du serveur dans un


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,948 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales