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 :

Créer une fenêtre Tkinter


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Points : 8
    Points
    8
    Par défaut Créer une fenêtre Tkinter
    Bonjour à tous ,

    Je suis un p'tit Belge totalement débutant en python. J'ai presque fini le tutoriel de Openclassroom, et je suis en train de lire le guide offert par dev.net. J'ai des bonnes notions en HTML et Batch, un peu en JS et PHP, et j'ai "codé" des trucs pas trop mal (pour moi en tout cas ) il y a 10 ans sur le GECK (l'éditeur du jeu Fallout 3). A part ça, je n'y connait absolument rien...

    J'utilise Windows 10, IDE, Python 3.8.2, opencv2, tkinter, PIL,...

    Mon premier ambitieux projet est de créer une application Win10, qui se lance au démarrage de ma session Windows. En voici les caractéristiques :
    -Encryptage d'un dossier au lacement du programme (j'ai déjà écrit un script Batch pour ça)
    -Plein écran sans barre de titre
    -Image d'arrière plan
    -Demande de mot de passe
    -Décryptage d'un dossier si mot de passe ok (script batch toujours)
    -Screenshots de la webcam vers des fichiers jpg, png...
    -Pas de possibilité de Alt F4
    -Envoi d'un mail avec Date, adresse IP et captures d'écran Webcam en PJ
    -Garder une fenêtre ouverte en permanence en "arrière plan" de windows afin de crypter le dossier via raccourci clavier et verrouiller la session Windows.

    Bien entendu ce programme sera utilisé à des fins professionnelles et en toute légalité.

    Pour le moment j'ai réussi à trouver des scripts pour faire un peu tout ça mais je n'arrive pas à tout mettre dans une seule fenêtre, et j'ai beau tourner et retourner le problème dans tous les sens je ne comprends pas... Je pense qu'un code fait appel à "class Interface(Tk):" et un autre à "def show_frame():" et que du coup ça ne peut pas fonctionner ainsi. Du coup, quand je lance mon code, j'ai soit : 2 ou 3 fenêtres avec chacune l'une des caractéristiques dont j'ai besoin, soit rien qui fonctionne...

    On va y aller step-by-step au niveau de mes 1000 questions, et si vous pouviez déjà juste m'aider à comprendre comment créer une seule fenêtre tkinter dans laquelle mettre touts ces objets, widgets, texts, images etc, ce serait génial! Je ne demande pas de solution clé en main (j'ai lu assez de forum pour constater que cela était très mal vu et je le comprends), juste des indices, explications, conseils...


    Je suis désolé si ces question vous paraissent très basiques, mais j'ai vraiment du mal à comprendre l'interface graphique avec Python, c'est autrement plus compliqué qu'en HTML...

    Voici le code (je sait que c'est très "fouillis"...) :

    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
     
    ####
    #Caméra dans fenêtre fullscreen
    ####
     
    from collections import deque
    import tkinter as tk
    from tkinter import *
    from tkinter import messagebox #### Si j'importe une fois tkinter au complet, peut-être pas besoin d'importer tous les modules en plus ?
    import cv2
    import time
    from PIL import Image, ImageTk
    import numpy
    import os
    from tkinter import Tk, PhotoImage, Canvas
     
    ####
    #WWallpaper
    ####
    class Interface(Tk):
        def __init__(self, path_image):
            super(Interface, self).__init__()
     
            self.image = PhotoImage(file=path_image) #### Je dois comprendre la commande self
            self.w, self.h = self.image.width(), self.image.height()
     
            self.canvas = Canvas(self, width=self.w, height=self.h)
            self.canvas.pack()
            self.canvas.create_image((self.w//2, self.h//2), image=self.image)
     
            self.mainloop()
    Interface('1.png')
     
     
     
     
     
    def quit_(root):
        root.destroy()
     
     
    #Print screen
    img_counter = 0
    k = cv2.waitKey(1)
    if k%256 == 32:
        # SPACE pressed
        img_name = "opencv_frame_{}.png".format(img_counter)
        cv2.imwrite(img_name, frame)
        print("{} written!".format(img_name))
        img_counter += 1
     
    ###
     
     
    def show_frame(): ### Je dois arriver à lier le print screen avec ça
        _, frame = cap.read()
        frame = cv2.flip(frame, 1)
        cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
        img = Image.fromarray(cv2image)
        imgtk = ImageTk.PhotoImage(image=img)
        lmain.imgtk = imgtk
        lmain.configure(image=imgtk)
        lmain.after(10, show_frame)
     
     
     
    width, height = 800, 600 
    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
    root = tk.Tk()
    root.bind('<Escape>', lambda e: root.quit())
    root.wm_attributes('-fullscreen','true') 
    lmain = tk.Label(root)
    lmain.pack()
     
     
     
    # quit button
    quit_button = tk.Button(master=root, text='Quit',command=lambda: quit_(root))
    quit_button.pack()
     
    show_frame()
     
    root.mainloop()

  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 781
    Points
    36 781
    Par défaut
    Salut,

    Citation Envoyé par mfr5167 Voir le message
    Comment créer une seule fenêtre tkinter dans laquelle mettre touts ces objets, widgets, texts, images etc, ce serait génial!
    Facile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    from tkinter import *
     
    root = Tk()
    tk.Label(root, text='coucou').pack()
    tk.Button(root, text='quit', command=root.quit).pack()
    mainloop()
    Après pour apprendre à composer de constructions compliquées, il faut commencer par apprendre les constructions simples...
    Et pour çà vous avez des tutos et un temps non négligeable à passer (s'il suffisait de recopier pour comprendre, çà se saurait).

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci beaucoup pour votre réponse.

    Je me suis mal exprimé, je sais comment afficher de simples widgets ou de simples lignes dans une seule fenêtre en temps normal, à part dans le cas présent. Ainsi, je ne comprends pas pourquoi, lorsque je lance mon script, je me retrouve avec deux fenêtres TK, une avec l'arrière plan, et une avec la webcam. J'ai tout essayé, soit j'ai rien, soit j'ai deux fenêtres...

  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 781
    Points
    36 781
    Par défaut
    Salut,

    Citation Envoyé par mfr5167 Voir le message
    Ainsi, je ne comprends pas pourquoi, lorsque je lance mon script, je me retrouve avec deux fenêtres TK, une avec l'arrière plan, et une avec la webcam.
    Si vous vous retrouvez avec 2 fenêtres, c'est que vous avez créé 2 fenêtres.

    Si vous récupérez du code à gauche et à droite, en espérant qu'il suffit de les coller à la suite en touillant un peu pour que çà marche... c'est votre droit (d'espérer).

    Ce n'est pas moi qui passerait du temps à vous expliquer pourquoi un code que vous n'avez même pas essayé de comprendre ne fonctionne pas.

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Points : 8
    Points
    8
    Par défaut
    Merci pour votre réponse, votre temps et votre jugement (erroné). Merci également de ne plus répondre si vous estimez perdre votre temps, car vous en perdez également en vous permettant de porter des jugements de valeur sur moi après avoir lu deux messages sur un forum.

    Sans rentrer dans un long débat stérile, je vous souhaite de rencontrer des personnes plus ouvertes lorsque, à votre tour, vous vous lancerez dans un nouveau domaine dont vous ne maîtrisez pas toutes les ficelles, si tant est qu'il y en ai un .


    Case closed.

Discussions similaires

  1. Créer une fenêtre sans bords
    Par N3odyme dans le forum C++
    Réponses: 2
    Dernier message: 06/07/2006, 00h27
  2. [C# 2.0] Créer une fenêtre non redimensionnable
    Par sqlnoob dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/06/2006, 11h22
  3. Réponses: 2
    Dernier message: 08/06/2006, 15h49
  4. Créer une fenêtre
    Par RaygKross dans le forum Qt
    Réponses: 12
    Dernier message: 08/02/2006, 09h34
  5. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46

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