{"id":5803,"date":"2024-08-29T06:28:11","date_gmt":"2024-08-29T06:28:11","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/saisie-avec-le-widget-entry-en-tkinter\/"},"modified":"2024-08-29T06:28:14","modified_gmt":"2024-08-29T06:28:14","slug":"saisie-avec-le-widget-entry-en-tkinter","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/saisie-avec-le-widget-entry-en-tkinter\/","title":{"rendered":"6.6 Saisie avec le Widget Entry en Tkinter"},"content":{"rendered":"\n<p><strong>Widget Entry en Tkinter<\/strong> est une comp\u00e9tence essentielle pour toute personne souhaitant cr\u00e9er des interfaces utilisateur en Python. Le widget Entry permet de recevoir des entr\u00e9es de texte de la part de l&rsquo;utilisateur, qu&rsquo;il s&rsquo;agisse de simples cha\u00eenes de caract\u00e8res ou de donn\u00e9es plus complexes. Apprenons ensemble comment utiliser ce widget de mani\u00e8re efficace gr\u00e2ce \u00e0 des exemples concrets de code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction \u00e0 la Saisie avec le Widget Entry en 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\/583376168?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>Le widget Entry en Tkinter est utilis\u00e9 pour cr\u00e9er des champs de texte dans lesquels les utilisateurs peuvent saisir des informations. Il est couramment utilis\u00e9 dans les formulaires, les bo\u00eetes de dialogue et autres interfaces utilisateur qui requi\u00e8rent une saisie utilisateur.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er un Champ de Saisie avec le Widget Entry<\/h3>\n\n\n\n<p>Pour commencer \u00e0 utiliser le widget Entry, nous devons d&rsquo;abord <a href=\"https:\/\/wikiform.fr\/codespace\/creer-une-fenetre-avec-tkinter-tutoriel\" target=\"_blank\" rel=\"noopener\">cr\u00e9er une fen\u00eatre<\/a> et y ajouter un champ de saisie. Voici un exemple de cr\u00e9ation d&rsquo;un champ de saisie simple :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\ndef show_entry_content():\n    print(entry.get())\n\nroot = tk.Tk()\nroot.title(\"Exemple de Saisie\")\n\nentry = tk.Entry(root)\nentry.pack()\n\nbutton = tk.Button(root, text=\"Afficher Contenu\", command=show_entry_content)\nbutton.pack()\n\nroot.mainloop()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Personnaliser le Widget Entry<\/h3>\n\n\n\n<p>Le widget Entry peut \u00eatre personnalis\u00e9 de diff\u00e9rentes mani\u00e8res, que ce soit la couleur de fond, la police de caract\u00e8res, ou la largeur du champ de saisie :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\nroot = tk.Tk()\nroot.title(\"Personnaliser la Saisie\")\n\n# Cr\u00e9er un champ de saisie avec des personnalisations\nentry = tk.Entry(root, bg=\"lightgrey\", fg=\"blue\", font=(\"Helvetica\", 14), width=30)\nentry.pack()\n\nroot.mainloop()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Utiliser une Variable Associ\u00e9e<\/h3>\n\n\n\n<p>Vous pouvez lier le contenu du widget Entry \u00e0 une variable Tkinter comme <code>StringVar<\/code>. Cela permet de manipuler le contenu du champ de saisie de mani\u00e8re plus dynamique :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\nroot = tk.Tk()\nroot.title(\"Variable Associ\u00e9e\")\n\nentry_text = tk.StringVar()\n\nentry = tk.Entry(root, textvariable=entry_text)\nentry.pack()\n\ndef print_text():\n    print(entry_text.get())\n\nbutton = tk.Button(root, text=\"Afficher Texte\", command=print_text)\nbutton.pack()\n\nroot.mainloop()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Valider les Entr\u00e9es Utilisateurs<\/h3>\n\n\n\n<p>Pour assurer que les utilisateurs entrent des donn\u00e9es valides, il est possible d&rsquo;ajouter des fonctions de validation \u00e0 votre widget Entry :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\ndef validate_entry(new_value):\n    if new_value.isdigit() or new_value == \"\":\n        return True\n    else:\n        return False\n\nroot = tk.Tk()\nroot.title(\"Validation de Saisie\")\n\nvalidate_command = root.register(validate_entry)\n\nentry = tk.Entry(root, validate=\"key\", validatecommand=(validate_command, '%P'))\nentry.pack()\n\nroot.mainloop()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Exemple Compl\u00e8te : Formulaire d&rsquo;Inscription<\/h3>\n\n\n\n<p>Appliquons ce que nous avons appris en construisant un simple formulaire d&rsquo;inscription :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\ndef submit_form():\n    user_info = f\"Nom: {name_var.get()}, \u00c2ge: {age_var.get()}, Email: {email_var.get()}\"\n    print(user_info)\n\nroot = tk.Tk()\nroot.title(\"Formulaire d'Inscription\")\n\nname_var = tk.StringVar()\nage_var = tk.StringVar()\nemail_var = tk.StringVar()\n\ntk.Label(root, text=\"Nom:\").pack()\ntk.Entry(root, textvariable=name_var).pack()\n\ntk.Label(root, text=\"\u00c2ge:\").pack()\ntk.Entry(root, textvariable=age_var).pack()\n\ntk.Label(root, text=\"Email:\").pack()\ntk.Entry(root, textvariable=email_var).pack()\n\ntk.Button(root, text=\"Soumettre\", command=submit_form).pack()\n\nroot.mainloop()\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Le Widget Entry est un composant essentiel pour toute application GUI construite avec Tkinter. Il permet de g\u00e9rer efficacement la saisie utilisateur, et lorsqu&rsquo;il est combin\u00e9 avec des m\u00e9canismes de validation et des variables Tkinter, il peut grandement enrichir l&rsquo;interactivit\u00e9 de vos interfaces. Explorez ces techniques et commencez \u00e0 cr\u00e9er des applications plus dynamiques et r\u00e9actives.<\/p>\n\n\n\n<p>Si vous voulez en apprendre davantage sur l&rsquo;utilisation des widgets Tkinter, n&rsquo;h\u00e9sitez pas \u00e0 consulter nos autres guides tels que <a href=\"https:\/\/wikiform.fr\/codespace\/utiliser-le-widget-label-avec-tkinter\" target=\"_blank\" rel=\"noopener\">Utiliser le Widget Label avec Tkinter<\/a> et <a href=\"https:\/\/wikiform.fr\/codespace\/creer-des-boutons-avec-tkinter-guide\" target=\"_blank\" rel=\"noopener\">Cr\u00e9er des Boutons avec Tkinter<\/a>. Pour comprendre les bases de la programmation Python, vous pouvez lire <a href=\"https:\/\/wikiform.fr\/codespace\/premier-programme-python-hello-world\" target=\"_blank\" rel=\"noopener\">Premier Programme Python: Hello World<\/a> et <a href=\"https:\/\/wikiform.fr\/codespace\/comprendre-les-variables-en-python\" target=\"_blank\" rel=\"noopener\">Comprendre les Variables en Python<\/a>. Pour un guide complet sur la saisie utilisateur, visitez <a href=\"https:\/\/wikiform.fr\/codespace\/saisie-utilisateur-en-python-guide-complet\" target=\"_blank\" rel=\"noopener\">Saisie Utilisateur en Python: Guide Complet<\/a>.<\/p>\n\n\n\n<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 Offre 50%\" title=\"\"><\/a>\n","protected":false},"excerpt":{"rendered":"<p>Widget Entry en Tkinter est une comp\u00e9tence essentielle pour toute personne souhaitant cr\u00e9er des interfaces utilisateur en Python. Le widget Entry permet de recevoir des&#8230;<\/p>\n","protected":false},"author":4,"featured_media":2953,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[18],"class_list":["post-5803","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\/5803","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=5803"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5803\/revisions"}],"predecessor-version":[{"id":5804,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5803\/revisions\/5804"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/2953"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}