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

Python Discussion :

comment ouvrir une fenetre à volonté ?


Sujet :

Python

  1. #1
    Membre à l'essai Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Points : 12
    Points
    12
    Par défaut comment ouvrir une fenetre à volonté ?
    bonjour je suis en train de taper plusieurs programmes qui nécessitent un clavier, donc je me suis intéressé aux héritages de classes. je suis tombé sur un problème qui me bloque: comment faire pour activer le clavier au bon moment (donc pas forcément au début du programme)? pour moi quand on utilise tkinter sous python 3, l'initialisation c'est aussi la commande qui créé la page. ce qui me dérange c'est que la classe du clavier n'est nécessaire qu'à certains moments pour mes programmes et donc l'activer dés le lancement du programme c'est gênant pour ce que je veux en faire. auriez vous un moyen de m'aider. je tiens à dire que j'ai fait des recherches sur internet et que je n'ai rien trouvé qui m'aide.
    ps: je tiens à préciser que je demande comment faire donc je n'ai pas de programme à vous faire corriger. merci de vos propositions

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par eponge Voir le message
    ps: je tiens à préciser que je demande comment faire donc je n'ai pas de programme à vous faire corriger. merci de vos propositions
    L'important serait de commencer à décrire l'interaction entre l'utilisateur et l'application que vous voulez réaliser.

    Les saisies du clavier ne sont prises en compte qu'après l'association (bind) des évènements correspondants à des callbacks (ou l'utilisation de widget de saisie comme Entry ou Text) *et* lorsque widget/fenêtres ont le focus.

    Héritage et classe n'apportent pas grand chose côté "fonctionnel" - on peut faire avec ou sans - c'est juste une organisation différente du code (pas de ce que çà fait).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Points : 12
    Points
    12
    Par défaut
    les programmes sont fait pour être utilisé sur un rapsberry avec un écran tactile mais sans clavier donc j'ai besoin d'un 'clavier' virtuel pour tous les programmes que j'utiliserais sur cet appareil.
    par exemple j'ai un programme code avec tkinter avec des entrées à remplir quand on appuie sur l'entrée le programme appelle une autre classe (le fameux clavier) pour permettre à l'utilisateur d'entrer la commande puis ensuite de la renvoyer au premier programme pour qu'il puisse traitement de celle-ci. le programme de clavier utilise tkinter et la commande bind mais vu que je l'utilise avec plusieurs programmes je voulais l'utiliser dans un héritage pour pouvoir en cas de modification n'avoir à faire qu'une seule fois et pas partout où un je l'utilise.


    -init programme principal,
    -prog tourne
    -appui sur une entry ->appel-> clavier:
    -entrée des informations
    <-envoi des infos<-
    programme principal
    -traitement des info

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Tel que vous racontez çà, on dirait que le clavier virtuel est composé/fabriqué avec de widgets tkinter.
    Après je ne comprends pas trop ce que vous entendez par "programme". Pour moi ce sont des entités indépendantes qui ne communiquent pas (à priori).

    De plus si le programme A se retrouve avec le focus sur un widget de saisie, normal que le clavier apparaisse. L'utilisateur fait sa saisie, la valide et le clavier disparait. S'il change d'avis et active B, le clavier de A disparaît et celui de B le remplace.

    Et vous vous retrouvez à utiliser le code qui gère le clavier virtuel dans les programmes A et B. Ce qui revient à faire un "import" du code correspondant.

    Et peut être que la question devient alors de comment partager une sorte de bibliothèque entre plusieurs applications....(histoire de ne pas recopier...)
    Mais à vous de dire si j'ai bien compris ou de préciser.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Points : 12
    Points
    12
    Par défaut
    le clavier couvre presque entièrement l'écran et tout changement de fenêtre qui s'opère entraine la fermeture du premier si un autre clavier est appelé (sécurité liée au programme qui appelle). sinon en gros j'ai l'intention d'utiliser le clavier comme bibliothèque mais étant autodidacte j'ai du mal. par programme ce sont tous des classes d'où l'utilisation de l'héritage pour la transmission des données.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par eponge Voir le message
    sinon en gros j'ai l'intention d'utiliser le clavier comme bibliothèque mais étant autodidacte j'ai du mal. par programme ce sont tous des classes d'où l'utilisation de l'héritage pour la transmission des données.
    Dans un premier temps vous mettez tous vos scripts dans un même répertoire. Si le clavier virtuel est dans clavier.py, les scripts qui en ont besoin pourront faire import clavier.
    Si çà ne convient pas il y a plusieurs répertoires... il faut recopier clavier.py (ou plus si nécessaire).
    Une fois que tout fonctionne, vous allez pouvoir pousser clavier.py dans un répertoire "à part" et vous pourrez indiquez à Python comment aller le récupérer (en modifiant PYTHONPATH ou sys.path).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre à l'essai Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Points : 12
    Points
    12
    Par défaut
    le clavier sera placé dans un répertoire avec d'autres programmes qui seront utilisés de la même manière. j'arrive à les appeler sans problèmes sauf évidement pour mes problème d'initialisation et /ou d'héritage.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par eponge Voir le message
    j'arrive à les appeler sans problèmes sauf évidement pour mes problème d'initialisation et /ou d'héritage.
    Si vous ne prenez pas le temps de raconter de quoi il en retourne...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre à l'essai Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Points : 12
    Points
    12
    Par défaut
    comme dis dans l'énoncé quand j'utilise l'héritage au moment où je déclare le clavier c'est en créant une page (car pour moi init avec tkinter= création d'une page). or je n'ai pas besoin du clavier au début mais quand l'utilisateur le demande.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par eponge Voir le message
    quand j'utilise l'héritage au moment où je déclare le clavier c'est en créant une page
    C'est pas l'héritage qui va créer une instance et appeler la méthode qui...
    Et l'héritage n'est pas la seule façon de relier 2 classes.

    Citation Envoyé par eponge Voir le message
    (car pour moi init avec tkinter= création d'une page). or je n'ai pas besoin du clavier au début mais quand l'utilisateur le demande
    Pour moi on fait un peu ce qu'on veut dans __init__ et si çà ne fait pas ce que j'en attends, je code çà autrement.

    Si vous racontez que ce que vous avez fait (sans le montrer) ne fonctionne pas, j'en suis désolé mais il faut juste le faire autrement.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre à l'essai Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Points : 12
    Points
    12
    Par défaut
    ce que j'ai fait ce sont des tests qui ont tous foiré les uns après les autres et je ne fais QUE demander un exemple fonctionnel que je pourrais adapter à mes besoins mais bon vous voulez le code le voici :
    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
    import tkinter as tk
     
     
    class Test(tk.Tk):
        def __init__(self):
            tk.Tk.__init__(self)
            #self.creer()
     
        def creer(self):
            self.label=tk.Label(self,text='ça marche')
            self.bouton=tk.Button(self,text="quitter",command=self.quit)
            self.label.pack()
            self.bouton.pack()
            #tk.Label(self,'ça marche').grid(row=0,column=0)
     
    test=Test()
    donc voilà le code du programme qui appelle (enfin c'est un programme pour faire des tests)
    et voici le clavier
    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
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
     import tkinter as tk
    #0) lettre+chiff 1)chiff 2)num tel 10 chiffres 3)lettre
    class Neoclav:
        """clavier pour écran tactile"""
        def __init__(self):
            self.ecran=""
            self.caract=["a","z","e","r","t","y","u","i","o","p","q","s","d","f","g",
                         "h","j","k","l","m","w","x","c","v","b","n"]
            self.majus=["A","Z","E","R","T","Y","U","I","O","P","Q","S","D","F","G",
                        "H","J","K","L","M","W","X","C","V","B","N"]
            self.chiff=["0","1","2","3","4","5","6","7","8","9"]
            self.fonct=['eff','raz','esp','aj','<-','->','maj']
            self.result=[]   #liste receptionnant les frappes du 'clavier'
            self.trans=[]    #mot intermédiaire pour ajout et corrections
            self.final=""
            self.sous=0      #emplacement de la correction
            self.soul=False  #mode correction frappe
            self.bip=False   #clignotant affichage
            self.maj=False   #affichage maj
            self.val=False    #envoi de fin de travail
     
            #self.choixecran()
     
     
        #mise en place du clavier    
        def choixecran(self,page,ecran=0):
            self.ecran=ecran
            self.page=page
            self.aff=tk.Frame(self.page)
            tk.Button(self.aff,text='quitter',bg='red',fg='white',command=self.quitter).grid(row=0,column=5)
            tk.Button(self.aff, text='envoi', command=self.getretour).grid(row=0, column=4)
            self.cla=tk.Canvas(self.aff,width=600,height=300,bg='cyan')
            self.cla.bind('<Button-1>',self.clav)
            self.cla.grid(row=2,column=0,columnspan=6)
            if(self.ecran==0):
                self.affichagetot()
            elif((self.ecran==1)or(self.ecran==2)):
                self.affichiff()
            elif(self.ecran==3):
                self.afflettre()
            self.affcont()
            self.liseuse() 
     
        def liseuse(self):
            self.lecteur=tk.Frame(self.aff)
            self.lecteur.grid(row=1,column=0,columnspan=5)
            if self.soul is True:
                fin=list(self.result)
                sous=self.sous*2
                fin.insert(self.sous,self.trans)
                leng=len(self.trans)
                if leng>0:
                    tk.Label(self.lecteur,text="résultat: ",bg='green',fg='white').grid(row=0,column=0)
                    tk.Label(self.lecteur,text=fin,bg='green',fg='white').grid(row=0,column=1)
                if self.bip is False:
                    tk.Label(self.lecteur,text=self.result,width=50,underline=sous).grid(row=0,column=2,columnspan=3)
     
                    self.bip=True
                else:
                    tk.Label(self.lecteur,text=self.result,width=50).grid(row=0,column=2,columnspan=3)
                    self.bip=False
            else:
                tk.Label(self.lecteur,text=self.result,width=70).grid(row=0,column=0,columnspan=5)
            #self.lecteur.after(500,self.liseuse)
     
        #touches de fonctions
        def affcont(self):
            j=0
            for self.colonne in range(50,600,50):
                j+=1
                if j<8:
                    if (self.ecran==0)or(self.ecran==3):
                        co=self.colonne+50
                        self.cla.create_rectangle(co,250,co+30,280,fill='red')
                        self.cla.create_text(co+15,265,text=self.fonct[j-1])
                    else:
                        if j<=4:
                            co=self.colonne
                            self.cla.create_rectangle(200,co,235,co+30,fill='red')
                            self.cla.create_text(215,co+15,text=self.fonct[j-1])
                        elif j==5:
                            co=self.colonne-200
                            self.cla.create_rectangle(co,200,co+35,230,fill='red')
                            self.cla.create_text(co+15,220,text=self.fonct[j-1])
                        else:
                            co=self.colonne-150
                            self.cla.create_rectangle(co,200,co+35,230,fill='red')
                            self.cla.create_text(co+15,220,text=self.fonct[j-1])
     
            #détection des 'frappes'
        def clav(self,event):
            a=0
            b=0
            c=0
            x=event.x
            y=event.y
            # formation des cases de frappes pour chiffres et lettres
            for colonne in range(50,300,50):
                if((y>colonne)and(y<colonne+30)):
                    b=colonne//50
            for ligne in range(50,600,50):
                if((x>ligne)and(x<ligne+30)):
                    a=ligne//50
            if((a==0)or(b==0)):
                self.result.append('')
            if((b==1)and(self.ecran==0)):   #chiffres dans aff total
                if self.soul is True:
                    self.trans.append(self.chiff[a-1])
                else:
                    self.result.append(self.chiff[a-1])
            if((self.ecran==0)or(self.ecran==3)):   #lettres
                if((b==2)or(b==3)):
                    c=10*(b-2)+(a-1)
                    if self.maj is True:
                        car=self.majus[c]
                    else:
                        car=self.caract[c]
                    if self.soul is True:
                        self.trans.append(car)
                    else:
                        self.result.append(car)
                elif b==4:   #lettres clavier court
                    if((a>2)and(a<9)):   #limite dernière ligne lettres
                        c=10*(b-2)+(a-3)
                        if self.soul is True:
                            self.trans.append(self.caract[c])
                        else:
                            self.result.append(self.caract[c])
                elif b>4:   #touche fonction
                    dec=2
                    if a==dec:   #fonction effacement d'un caratère
                        leng=len(self.result)
                        if(leng>0):
                            if self.soul is True:
                                sup=self.sous
                                del self.result[sup]
                            else:
                                del self.result[leng-1]
     
                    elif a==dec+1:   #fonction tout effacer
                        self.result=[]
                        self.lecteur.grid_forget()
     
                    elif a==dec+2:   #fonction espace
                        if self.sous is True:
                            self.trans.append(' ')
                        else:
                            self.result.append(' ')
     
                    elif a==dec+3:   #insertion de caractères
                        self.result.insert(self.sous,self.trans)
                        self.modajout=False
                        self.trans=[]
     
                    elif a==dec+4:   #flèche gauche
                        self.soul=True
                        leng=len(self.result)
                        if self.sous==0:
                            self.sous=leng-1
                        else:
                            self.sous-=1
     
                    elif a==dec+5:   #flèche droite
                        self.soul=True
                        leng=len(self.result)
                        if self.sous==leng:
                            self.sous=0
                        else:
                            self.sous+=1
     
                    elif a==dec+6:   #mode majuscule
                        self.majuscule()
     
     
            elif((self.ecran==1)or(self.ecran==2)):  #clavier chiffres  
                c=b*3+a
                if(self.ecran==2):
                    leng=len(self.result)
                    if((leng==2)or(leng==5)or(leng==8)or(leng==11)):
                        if self.soul is True:
                            self.trans.append('.')
                        else:
                            self.result.append('.')
     
                if((a>0)and(a<4)and(c<=12)):#frappe chiffre
                    if self.soul is True:
                        self.trans.append(self.chiff[c-3])
                    else:
                        self.result.append(self.chiff[c-3])
     
                elif(c==14):  #frappe 0
                    if self.soul is True:
                        self.trans.append(0)
                    else:
                        self.result.append(0)
     
                elif(c==7):#fonct efface
                    leng=len(self.result)
                    if(leng>0):
                        if self.soul is True:
                            eff=self.sous
                        else:
                            eff=leng-1
                            if eff==11:
                                del self.result[eff]
                                del self.result[eff-1]
                            elif eff==8:
                                del self.result[eff]
                                del self.result[eff-1]
                            elif eff==5:
                                del self.result[eff]
                                del self.result[eff-1]
                            elif eff==2:
                                del self.result[eff]
                                del self.result[eff-1]
                            else:
                                del self.result[eff]
     
                elif(c==10):#fonct raz
                    self.result=[]
                    self.lecteur.grid_forget()
     
                elif(c==13):#fonc espace
                    if self.soul is True:
                        self.trans.append(' ')
                    else:
                        self.result.append(' ')
            if(self.result.count('')!=0):
                if self.soul is True:
                    del self.result[self.sous]
                else:
                    self.result.remove('')
            self.liseuse()
            #return self.result
            self.getretour()
     
     
        def affichagetot(self):
            j=0
            for self.ligne in range(50,300,50):
                for self.colonne in range(50,550,50):
                    j+=1
                    li=self.ligne
                    if(li<80):     #chiffres
                        co=self.colonne
                        self.cla.create_rectangle(co,li,co+30,li+30)
                        if j<11:
                            self.cla.create_text(co+15,li+15,text=self.chiff[j-1])
                    elif(li>=180):   #lettre
                        co=self.colonne+100
                    else:
                        co=self.colonne
                    if((j>10)and(j<37)):
                        if self.maj is True:
                            car=self.majus[j-11]
                        else:
                            car=self.caract[j-11]
                        self.cla.create_rectangle(co,li,co+30,li+30)
                        self.cla.create_text(co+15,li+15,text=car)
     
        def affichiff(self):
            j=0
            self.cla.configure(width=250,height=250)
            for self.ligne in range(50,250,50):
                for self.colonne in range(50,200,50):
                    j+=1
                    li=self.ligne
                    co=self.colonne
                    if(j<10):
                        self.cla.create_rectangle(co,li,co+30,li+30)
                        self.cla.create_text(co+10,li+10,text=self.chiff[j])
                    elif(j==10):
                        co=self.colonne+50
                        self.cla.create_rectangle(co,li,co+30,li+30)
                        self.cla.create_text(co+10,li+10,text=self.chiff[0])
     
        def afflettre(self):
            j=0
            for self.ligne in range(80,280,50):
                for self.colonne in range(50,550,50):
                    j+=1
                    li=self.ligne
                    if(li<180):
                        co=self.colonne
                        self.cla.create_rectangle(co,li,co+30,li+30)
                        if j<27:
                            self.cla.create_text(co+10,li+10,text=self.caract[j-1])
                    elif((li>=180)and(j<27)):
                        co=self.colonne+100
                        self.cla.create_rectangle(co,li,co+30,li+30)
                        self.cla.create_text(co+10,li+10,text=self.caract[j-1])
     
        def majuscule(self):
            if self.maj is True:
                self.maj=False
            else:
                self.maj=True
            self.choixecran()
     
     
        def envoi(self):
            self.getretour()
            self.quitter()
     
        def quitter(self):
            self.aff.destroy()
     
        def getretour(self):
            leng=len(self.result)
            for i in range(0,leng):
                self.final=self.final+self.result[i]
            print('envoi retour',self.result,self.final)
            yield self.final
     
    if __name__=="__main__":
        cont=Neoclav()
        cont.choixecran()

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par eponge Voir le message
    je ne fais QUE demander un exemple fonctionnel que je pourrais adapter à mes besoins mais bon vous voulez le code le voic
    Pour avoir un exemple fonctionnel, çà serait bien de commencer par expliciter la fonction à réaliser. Pour ce que j'en ai compris, chaque fois que l'utilisateur doit faire une saisie clavier, çà doit afficher un clavier virtuel qui...

    Donc çà part d'une Entry ou d'un widget Text à qui on donne le focus, ce qui fait apparaître une fenêtre dans laquelle on va avoir le clavier virtuel....

    Le plus important, c'est d'arriver à faire fonctionner tout çà...
    Sûr qu'à terme, mettre le code du clavier dans une classe et un fichier à part pourra être astucieux mais fonctionnellement que ce soit dans plusieurs scripts/modules ou tout dans un seul ne change rien.

    Moi ce que je fais dans ce cas là, c'est chercher sur Internet ce qu'on fait d'autres pour résoudre des problèmes similaires. Déjà c'est un point de départ et puis çà permet de voir des problèmes qu'on n'a pas encore anticipé.

    On y trouve ceci par exemple. On joue avec l'exemple, on regarde comment il est construit, ce que çà fait (ou pas), ... et puis on va voir s'il y a d'autres exemples. A la fin, on choisit, on améliore,...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre à l'essai Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Points : 12
    Points
    12
    Par défaut
    c'est gentil de me dire comment je dois faire. comme je l'ai dit précédemment je suis autodidacte donc j'utilise déjà cette méthode. je vais vous dire la dernière fois vous m'avez déjà envoyé me faire voir ailleurs je crois que ce coup ci je vais suivre votre conseil. je me demande vous avez dégouté combien de gens avec vos manières supérieures ? merci de me montrer à quel point je suis un ignare et un crétin, mais j'ai retenu la leçon je vais aller voir ailleurs si les autres endroits où l'on propose de l'aide sont moins arrogants. je vous souhaite de vivre le même genre de situation mais dans ma position et là je suis sûr que vous n'aimerez pas le ton de la personne en face de vous

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par eponge Voir le message
    c'est gentil de me dire comment je dois faire. comme je l'ai dit précédemment je suis autodidacte donc j'utilise déjà cette méthode.
    Si elle ne fonctionne pas pour vous, j'en suis désolé mais je n'ai rien d'autre à vous proposer.

    Citation Envoyé par eponge Voir le message
    je vous souhaite de vivre le même genre de situation mais dans ma position et là je suis sûr que vous n'aimerez pas le ton de la personne en face de vous
    Il y a plein de sujets sur lesquels je suis nul. Si j'ai envie de progresser, je sais ce que j'ai à faire: apprendre... et si c'est au dessus de mes moyens, je resterai nul et puis voilà.

    Après si je dois aller consulter et qu'un moins débutant que moi passe du temps à essayer de comprendre ce que je veux faire et qu'il n'y parvient pas, c'est dommage pour moi mais je ne vais pas engueuler cette ou ces personnes. D'abord parce qu'elle ont pris le temps d'essayer de comprendre et si je suis trop nul pour en profiter... çà ne m'aidera pas plus.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre à l'essai Avatar de eponge
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2017
    Messages : 76
    Points : 12
    Points
    12
    Par défaut
    c'est en vous lisant que je me rends compte que de toute manière il y a incompréhension entre nous. vu que vous avez apparemment compris exactement l'inverse de ce que j'ai tapé. tant pis

Discussions similaires

  1. Comment ouvrir une fenetre avec une taille définie
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/07/2007, 16h27
  2. Comment ouvrir une fenetre d ouverture de fichier
    Par willoi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/01/2007, 09h25
  3. Réponses: 1
    Dernier message: 28/12/2006, 15h17
  4. comment ouvrir une fenetre personalisée ?
    Par chaser_T dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/09/2006, 14h00
  5. Réponses: 3
    Dernier message: 11/05/2006, 16h34

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