{"id":5821,"date":"2024-08-29T07:04:24","date_gmt":"2024-08-29T07:04:24","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/exercices-pratiques-avec-tkinter\/"},"modified":"2024-08-29T07:04:28","modified_gmt":"2024-08-29T07:04:28","slug":"exercices-pratiques-avec-tkinter","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/exercices-pratiques-avec-tkinter\/","title":{"rendered":"6.15 Exercices Pratiques avec Tkinter"},"content":{"rendered":"\u00ab\u00a0`html\n\n<p><strong>Les Exercices Pratiques avec Tkinter<\/strong> sont essentiels pour comprendre et ma\u00eetriser ce module GUI de Python. En r\u00e9alisant des exercices, vous allez non seulement apprendre \u00e0 cr\u00e9er des interfaces utilisateurs interactives, mais \u00e9galement renforcer vos comp\u00e9tences en programmation Python. Jetons un coup d&rsquo;\u0153il \u00e0 quelques exemples pratiques pour vous aider \u00e0 d\u00e9marrer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction aux Exercices Pratiques avec Tkinter<\/h2>\n\n\n\n<div id=\"videoContainer\" style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;\">\n  <iframe src=\"https:\/\/player.vimeo.com\/video\/583387293?dnt=1&#038;fullscreen=0&#038;pip=0\" loading=\"lazy\" loading=\"lazy\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\" frameborder=\"0\" allow=\"autoplay\" allowfullscreen id=\"vimeoPlayer\"><\/iframe>\n  \n  <!-- Popup Desktop -->\n  <div id=\"popupContainer\" class=\"desktop-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 90%; max-width: 400px; padding: 20px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n    <h2 style=\"color: #333; font-size: 1.5em; margin: 10px 0;\" id=\"profitez-de-loffre-spciale-\">Profitez de l\u2019offre sp\u00e9ciale !<\/h2>\n    <p style=\"color: #e74c3c; font-size: 1.2em; margin: 10px 0;\">Obtenez notre cours pour seulement <strong id=\"price\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n    <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" style=\"display: block; padding: 10px 20px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 1em; margin: 20px auto;\" rel=\"noopener\">Commencer maintenant<\/a>\n    <button onclick=\"closePopup()\" style=\"padding: 10px 20px; font-size: 1em;\">Fermer<\/button>\n  <\/div>\n\n  <!-- Popup Mobile -->\n  <div id=\"popupContainerMobile\" class=\"mobile-popup\" style=\"display: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; max-width: 300px; padding: 15px; border-radius: 10px; text-align: center; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); background-color: rgba(255, 255, 255, 0.95); box-sizing: border-box;\">\n    <p style=\"color: #e74c3c; font-size: 1em; margin: 5px 0;\">Cours sp\u00e9cial \u00e0 <strong id=\"priceMobile\">29.5\u20ac<\/strong> au lieu de <del>59\u20ac<\/del> !<\/p>\n    <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" style=\"display: inline-block; padding: 8px 15px; background-color: #701CF5; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; font-size: 0.9em;\" rel=\"noopener\">Commencer maintenant<\/a>\n    <button onclick=\"closePopup()\" style=\"padding: 5px 10px; font-size: 0.9em;\">Fermer<\/button>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/player.vimeo.com\/api\/player.js\"><\/script>\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    var iframe = document.getElementById('vimeoPlayer');\n    var player = new Vimeo.Player(iframe);\n    var isPopupDisplayed = false;\n\n    player.on('play', function() {\n        if (!isPopupDisplayed) {\n            player.on('timeupdate', function(data) {\n                if (data.seconds >= 120 && !isPopupDisplayed) { \/\/ 120 seconds = 2 minutes\n                    \/\/ Pause the video and display the popup\n                    player.pause().then(function() {\n                        if (window.innerWidth > 768) {\n                            document.querySelector('.desktop-popup').style.display = 'block';\n                        } else {\n                            document.querySelector('.mobile-popup').style.display = 'block';\n                        }\n                        fetchPriceAndUpdatePopup();\n                        isPopupDisplayed = true;\n                    });\n                }\n            });\n        }\n    });\n\n    function fetchPriceAndUpdatePopup() {\n        fetch('https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144')\n            .then(response => response.text())\n            .then(html => {\n                var parser = new DOMParser();\n                var fetchedDoc = parser.parseFromString(html, 'text\/html');\n                var priceElement = fetchedDoc.querySelector('.ammount .fw-500');\n                var originalPriceElement = fetchedDoc.querySelector('.ammount del');\n                var price = priceElement ? priceElement.textContent.trim() : '29.5\u20ac';\n                var originalPrice = originalPriceElement ? originalPriceElement.textContent.trim() : '59\u20ac';\n\n                document.getElementById('price').textContent = price;\n                document.getElementById('priceMobile').textContent = price;\n                document.querySelector('.desktop-popup del').textContent = originalPrice;\n                document.querySelector('.mobile-popup del').textContent = originalPrice;\n            })\n            .catch(error => console.error('Error fetching the price:', error));\n    }\n\n    function closePopup() {\n        document.querySelector('.desktop-popup').style.display = 'none';\n        document.querySelector('.mobile-popup').style.display = 'none';\n        player.play(); \/\/ Allows resuming the video only after closing the popup\n    }\n});\n<\/script>\n\n\n\n<p>Les exercices pratiques avec Tkinter couvrent des aspects vari\u00e9s tels que la cr\u00e9ation de fen\u00eatres, la gestion des \u00e9v\u00e9nements, et l&rsquo;utilisation de diff\u00e9rents widgets. Ils sont con\u00e7us pour vous aider \u00e0 comprendre les concepts cl\u00e9s de Tkinter de mani\u00e8re interactive et pratique. Avant de commencer, si vous ne l&rsquo;avez pas d\u00e9j\u00e0 fait, il peut \u00eatre utile de <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-windows-facilement\">installer Python sur Windows<\/a>, sur <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-mac-2024-guide-complet\">Mac<\/a>, ou m\u00eame sur <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-linux-ubuntu-etape-par-etape\">Linux<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er une Fen\u00eatre Basique avec Tkinter<\/h3>\n\n\n\n<p>Pour commencer, cr\u00e9ons une simple fen\u00eatre Tkinter. En quelques lignes de code, vous pouvez cr\u00e9er une fen\u00eatre de base qui servira de fondation \u00e0 vos applications plus complexes.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\nroot = tk.Tk()\nroot.title(\"Fen\u00eatre Tkinter Basique\")\nroot.geometry(\"400x300\")\n\nroot.mainloop()<\/code><\/pre>\n\n\n\n<p>Si vous \u00eates nouveau dans la programmation Python, il peut \u00eatre utile de cr\u00e9er votre <a href=\"https:\/\/wikiform.fr\/codespace\/premier-programme-python-hello-world\">premier programme Python<\/a> avant de vous plonger dans les interfaces graphiques avec Tkinter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ajouter des Widgets: Label, Entry, et Button<\/h3>\n\n\n\n<p>L&rsquo;\u00e9tape suivante consiste \u00e0 ajouter des widgets \u00e0 notre fen\u00eatre. Nous allons ajouter un <code>Label<\/code> pour afficher du texte, un <code>Entry<\/code> pour permettre la saisie utilisateur, et un <code>Button<\/code> pour interagir avec l&rsquo;application. Pour comprendre comment s&rsquo;effectue la <a href=\"https:\/\/wikiform.fr\/codespace\/saisie-utilisateur-en-python-guide-complet\">saisie des donn\u00e9es utilisateur<\/a> en Python, jetez un \u0153il \u00e0 notre guide d\u00e9di\u00e9.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\ndef on_button_click():\n    print(f\"Texte entr\u00e9 : {entry.get()}\")\n\nroot = tk.Tk()\nroot.title(\"Widgets Tkinter\")\nroot.geometry(\"400x300\")\n\n# Label\nlabel = tk.Label(root, text=\"Entrez votre texte :\")\nlabel.pack(pady=10)\n\n# Entry\nentry = tk.Entry(root)\nentry.pack(pady=10)\n\n# Button\nbutton = tk.Button(root, text=\"Afficher\", command=on_button_click)\nbutton.pack(pady=10)\n\nroot.mainloop()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er un Formulaire de Connexion Simple<\/h3>\n\n\n\n<p>Un exemple pratique que presque toutes les applications n\u00e9cessitent est un formulaire de connexion. Nous pouvons cr\u00e9er un simple formulaire de connexion avec des champs pour le nom d&rsquo;utilisateur et le mot de passe, et un bouton pour soumettre les informations.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\ndef login():\n    username = username_entry.get()\n    password = password_entry.get()\n    print(f\"Nom d'utilisateur: {username}\")\n    print(f\"Mot de passe: {password}\")\n\nroot = tk.Tk()\nroot.title(\"Formulaire de Connexion\")\nroot.geometry(\"400x300\")\n\n# Nom d'utilisateur\ntk.Label(root, text=\"Nom d'utilisateur:\").pack(pady=5)\nusername_entry = tk.Entry(root)\nusername_entry.pack(pady=5)\n\n# Mot de passe\ntk.Label(root, text=\"Mot de passe:\").pack(pady=5)\npassword_entry = tk.Entry(root, show='*')\npassword_entry.pack(pady=5)\n\n# Bouton de connexion\ntk.Button(root, text=\"Connexion\", command=login).pack(pady=20)\n\nroot.mainloop()<\/code><\/pre>\n\n\n\n<p>Une compr\u00e9hension de base de <a href=\"https:\/\/wikiform.fr\/codespace\/structures-de-donnees-dictionnaires-en-python\">structures de donn\u00e9es comme les dictionnaires<\/a> pourrait \u00eatre tr\u00e8s utile pour g\u00e9rer et stocker les informations de connexion en Python.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ajouter des Menus \u00e0 votre Interface<\/h3>\n\n\n\n<p>Pour enrichir une application, l&rsquo;ajout de menus peut \u00eatre tr\u00e8s pratique. Voici comment vous pouvez ajouter une barre de menu avec des options comme \u00ab\u00a0Fichier\u00a0\u00bb, \u00ab\u00a0\u00c9dition\u00a0\u00bb, etc.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\ndef new_file():\n    print(\"Nouveau fichier cr\u00e9\u00e9\")\n\nroot = tk.Tk()\nroot.title(\"Ajouter des Menus\")\nroot.geometry(\"400x300\")\n\n# Barre de menu\nmenu_bar = tk.Menu(root)\n\n# Menu Fichier\nfile_menu = tk.Menu(menu_bar, tearoff=0)\nfile_menu.add_command(text=\"Nouveau\", command=new_file)\nfile_menu.add_command(text=\"Ouvrir\")\nfile_menu.add_command(text=\"Enregistrer\")\nfile_menu.add_separator()\nfile_menu.add_command(text=\"Quitter\", command=root.quit)\nmenu_bar.add_cascade(text=\"Fichier\", menu=file_menu)\n\n# Menu \u00c9dition\nedit_menu = tk.Menu(menu_bar, tearoff=0)\nedit_menu.add_command(text=\"Annuler\")\nedit_menu.add_command(text=\"Refaire\")\nmenu_bar.add_cascade(text=\"\u00c9dition\", menu=edit_menu)\n\n# Afficher la barre de menu\nroot.config(menu=menu_bar)\n\nroot.mainloop()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er une Interface de Conversion d&rsquo;Unit\u00e9s<\/h3>\n\n\n\n<p>Pour un exercice pratique plus avanc\u00e9, nous allons cr\u00e9er une interface pour la conversion d&rsquo;unit\u00e9s. Cette application prendra une valeur en entr\u00e9e, la convertira dans une unit\u00e9 diff\u00e9rente, et affichera le r\u00e9sultat. Vous pouvez \u00e9galement explorer d&rsquo;autres exemples d&rsquo;utilisation de <a href=\"https:\/\/wikiform.fr\/codespace\/utiliser-les-variables-de-controle-avec-tkinter\">variables de contr\u00f4le avec Tkinter<\/a> pour des calculs plus complexes.<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\ndef convert_units():\n    meters = float(entry_meters.get())\n    feet = meters * 3.28084\n    result.set(f\"{feet:.2f} pieds\")\n\nroot = tk.Tk()\nroot.title(\"Convertisseur d'Unit\u00e9s\")\nroot.geometry(\"400x300\")\n\n# Entr\u00e9e pour les m\u00e8tres\ntk.Label(root, text=\"Entrez la valeur en m\u00e8tres :\").pack(pady=10)\nentry_meters = tk.Entry(root)\nentry_meters.pack(pady=10)\n\n# Bouton de conversion\ntk.Button(root, text=\"Convertir en pieds\", command=convert_units).pack(pady=10)\n\n# R\u00e9sultat de la conversion\nresult = tk.StringVar()\ntk.Label(root, textvariable=result).pack(pady=10)\n\nroot.mainloop()<\/code><\/pre>\n\n\n\n<p>En poursuivant votre exploration de Tkinter, vous pouvez \u00e9galement vous plonger dans des projets plus complexes et des applications r\u00e9elles. Pour approfondir ces concepts, vous pouvez consulter des ressources externes et des cours en ligne. Par exemple, le <a href=\"https:\/\/realpython.com\/\" target=\"_blank\" rel=\"noopener\">site Real Python<\/a> propose des articles d\u00e9taill\u00e9s sur la programmation avec Tkinter, et le site <a href=\"https:\/\/docs.python.org\/fr\/3\/library\/tkinter.html\" target=\"_blank\" rel=\"noopener\">Python officiel<\/a> offre une documentation exhaustive. Vous pouvez \u00e9galement suivre des cours en ligne comme ceux de <a href=\"https:\/\/www.coursera.org\/\" target=\"_blank\" rel=\"noopener\">Coursera<\/a>.<\/p>\n\n\n\n<p>En poursuivant avec Tkinter, il est \u00e9galement utile de se familiariser avec les principes de base de la <a href=\"https:\/\/wikiform.fr\/codespace\/presentation-de-la-poo-en-python-introduction\">programmation orient\u00e9e objet (POO) en Python<\/a>, car cela peut am\u00e9liorer la structure et la maintenabilit\u00e9 de vos applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Les <strong>exercices pratiques avec Tkinter<\/strong> vous permettent de renforcer vos comp\u00e9tences en d\u00e9veloppement GUI avec Python. En r\u00e9alisant ces exercices, vous serez capable de cr\u00e9er des interfaces utilisateurs interactives et de ma\u00eetriser les fonctionnalit\u00e9s de base ainsi que les fonctionnalit\u00e9s avanc\u00e9es de Tkinter. Continuez \u00e0 explorer Tkinter et \u00e0 cr\u00e9er des applications dynamiques et intuitives. Pour plus de tutoriels, consultez notre article sur <a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/tkinter-interm\u00e9diaire-avanc\u00e9\/150\">les fonctionnalit\u00e9s interm\u00e9diaires et avanc\u00e9es de Tkinter<\/a>. Bonne programmation !<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wikiform.fr\/application\/learnify\/home\/course\/devenir-un-d%C3%A9veloppeur-python\/144\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/wikiform.fr\/codespace\/wp-content\/uploads\/2024\/07\/learnify-formation-PYTHON-offre-50.gif\" loading=\"lazy\" alt=\"Learnify formation Python \u00e0 50%\" title=\"\"><\/a><\/figure>\n\n\u00ab\u00a0`","protected":false},"excerpt":{"rendered":"<p>\u00ab\u00a0`html Les Exercices Pratiques avec Tkinter sont essentiels pour comprendre et ma\u00eetriser ce module GUI de Python. En r\u00e9alisant des exercices, vous allez non seulement&#8230;<\/p>\n","protected":false},"author":4,"featured_media":2917,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[18],"class_list":["post-5821","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-tutoriels"],"acf":[],"_titre_de_la_formation":null,"_description_":null,"_objectifs_pedagogiques":null,"_programme_":null,"_url_de_limage":null,"_materiel_necessaire":null,"_modalites_devaluation_des_acquis":null,"_moyens_pedagogiques_et_techniques":null,"_accessibilite_":null,"_formateur_":null,"menu_order":0,"_links":{"self":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/comments?post=5821"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5821\/revisions"}],"predecessor-version":[{"id":5822,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5821\/revisions\/5822"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/2917"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}