{"id":5795,"date":"2024-08-29T06:11:56","date_gmt":"2024-08-29T06:11:56","guid":{"rendered":"https:\/\/wikiform.fr\/codespace\/creer-une-fenetre-avec-tkinter-tutoriel\/"},"modified":"2024-08-29T06:12:00","modified_gmt":"2024-08-29T06:12:00","slug":"creer-une-fenetre-avec-tkinter-tutoriel","status":"publish","type":"post","link":"https:\/\/wikiform.fr\/codespace\/creer-une-fenetre-avec-tkinter-tutoriel\/","title":{"rendered":"6.2 Cr\u00e9er une Fen\u00eatre avec Tkinter : Tutoriel"},"content":{"rendered":"\u00ab\u00a0`html\n\n<p><strong>Cr\u00e9er une Fen\u00eatre avec Tkinter<\/strong> est une comp\u00e9tence essentielle pour d\u00e9velopper des applications GUI en Python. Tkinter est le module standard de Python pour la cr\u00e9ation d&rsquo;interfaces graphiques, offrant une grande flexibilit\u00e9 et facilit\u00e9 d&rsquo;utilisation. Ce tutoriel vous guidera \u00e9tape par \u00e9tape pour cr\u00e9er une fen\u00eatre de base avec Tkinter, tout en incluant des exemples de code pratiques.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction \u00e0 <strong>Cr\u00e9er une Fen\u00eatre avec Tkinter<\/strong><\/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\/583366288?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>Pour cr\u00e9er une fen\u00eatre de base avec Tkinter, vous devez comprendre comment initialiser une instance d&rsquo;application, d\u00e9finir les param\u00e8tres de la fen\u00eatre, et ajouter des widgets de base comme les boutons, les labels, et les zones de saisie. Suivez ce guide pour apprendre ces concepts fondamentaux.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Premiers Pas avec Tkinter<\/h3>\n\n\n\n<p>Commen\u00e7ons par configurer et lancer une fen\u00eatre Tkinter simple. Voici un exemple de code pour vous aider \u00e0 d\u00e9marrer :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\n# Initialiser l'application Tkinter\nroot = tk.Tk()\n\n# D\u00e9finir les param\u00e8tres de la fen\u00eatre\nroot.title(\"Ma Premi\u00e8re Fen\u00eatre Tkinter\")\nroot.geometry(\"400x300\")\n\n# Afficher la fen\u00eatre\nroot.mainloop()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ajouter des Widgets \u00e0 la Fen\u00eatre<\/h3>\n\n\n\n<p>Les widgets sont les \u00e9l\u00e9ments de l&rsquo;interface graphique, comme les boutons, les labels, et les zones de saisie. Ajoutons quelques widgets de base \u00e0 notre fen\u00eatre :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\nroot = tk.Tk()\nroot.title(\"Ma Premi\u00e8re Fen\u00eatre Tkinter\")\nroot.geometry(\"400x300\")\n\n# Ajouter un label\nlabel = tk.Label(root, text=\"Bienvenue \u00e0 Tkinter!\")\nlabel.pack()\n\n# Ajouter un bouton\nbutton = tk.Button(root, text=\"Cliquez-moi\", command=lambda: print(\"Bouton cliqu\u00e9\"))\nbutton.pack()\n\nroot.mainloop()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Personnaliser les Widgets<\/h3>\n\n\n\n<p>Tkinter permet \u00e9galement de personnaliser les widgets en modifiant leurs propri\u00e9t\u00e9s, comme la couleur de fond, les polices, et plus encore. Voici comment vous pouvez personnaliser vos widgets :<\/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 Personnalis\u00e9e Tkinter\")\nroot.geometry(\"400x300\")\n\n# Personnaliser un label\nlabel = tk.Label(root, text=\"Bienvenue \u00e0 Tkinter!\", bg=\"lightblue\", fg=\"darkblue\", font=(\"Helvetica\", 16))\nlabel.pack(pady=20)\n\n# Personnaliser un bouton\nbutton = tk.Button(root, text=\"Cliquez-moi\", bg=\"lightgrey\", fg=\"black\", font=(\"Helvetica\", 12), command=lambda: print(\"Bouton cliqu\u00e9\"))\nbutton.pack(pady=20)\n\nroot.mainloop()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cr\u00e9er une Disposition de Widgets<\/h3>\n\n\n\n<p>La disposition des widgets peut \u00eatre g\u00e9r\u00e9e en utilisant diff\u00e9rentes g\u00e9om\u00e9tries comme <code>pack<\/code>, <code>grid<\/code>, et <code>place<\/code>. Voici un exemple d&rsquo;utilisation de la g\u00e9om\u00e9trie <code>grid<\/code> pour placer les widgets de mani\u00e8re plus structur\u00e9e :<\/p>\n\n\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\nroot = tk.Tk()\nroot.title(\"Disposition des Widgets Tkinter\")\nroot.geometry(\"400x300\")\n\n# Utiliser grid pour placer les widgets\nlabel = tk.Label(root, text=\"Nom:\")\nlabel.grid(row=0, column=0, padx=10, pady=10)\n\nentry = tk.Entry(root)\nentry.grid(row=0, column=1, padx=10, pady=10)\n\nbutton = tk.Button(root, text=\"Soumettre\")\nbutton.grid(row=1, columnspan=2, pady=20)\n\nroot.mainloop()\n<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Gestion des \u00c9v\u00e9nements avec Tkinter<\/h3>\n\n<p>Tkinter permet \u00e9galement de g\u00e9rer les \u00e9v\u00e9nements comme les clics de souris et les frappes au clavier gr\u00e2ce \u00e0 des bind. Voici comment vous pouvez g\u00e9rer des \u00e9v\u00e9nements dans Tkinter :<\/p>\n\n<pre class=\"wp-block-code lang-python\"><code>import tkinter as tk\n\ndef on_button_click(event):\n    print(\"Bouton cliqu\u00e9!\")\n\nroot = tk.Tk()\nroot.title(\"Gestion des \u00c9v\u00e9nements Tkinter\")\nroot.geometry(\"400x300\")\n\nbutton = tk.Button(root, text=\"Cliquez-moi\")\nbutton.pack(pady=20)\n\n# Lier l'\u00e9v\u00e9nement de clic de souris \u00e0 la fonction\nbutton.bind(\"&lt;Button-1&gt;\", on_button_click)\n\nroot.mainloop()\n<\/code><\/pre>\n\n<p>En poursuivant votre exploration de Tkinter, vous d\u00e9couvrirez de nombreuses autres fonctionnalit\u00e9s et widgets qui vous permettront de cr\u00e9er des interfaces utilisateur robustes et interactives. N&rsquo;h\u00e9sitez pas \u00e0 consulter des ressources suppl\u00e9mentaires et \u00e0 exp\u00e9rimenter avec diff\u00e9rents composants pour perfectionner vos comp\u00e9tences. Pour une approche plus compl\u00e8te, consultez nos autres tutoriels tels que <a href=\"https:\/\/wikiform.fr\/codespace\/installer-python-sur-windows-facilement\">installer Python sur Windows<\/a> et <a href=\"https:\/\/wikiform.fr\/codespace\/presentation-de-la-poo-en-python-introduction\">introduction \u00e0 la POO en Python<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">Conclusion de <strong>Cr\u00e9er Fen\u00eatre Tkinter<\/strong><\/h2>\n\n<p>Cr\u00e9er une fen\u00eatre avec Tkinter est une comp\u00e9tence de base mais essentielle pour quiconque souhaite d\u00e9velopper des applications GUI en Python. En ma\u00eetrisant la cr\u00e9ation et la gestion des fen\u00eatres Tkinter, ainsi que l&rsquo;ajout et la personnalisation des widgets, vous serez en mesure de cr\u00e9er des interfaces utilisateur \u00e9l\u00e9gantes et fonctionnelles. Pour en savoir plus sur les fonctionnalit\u00e9s avanc\u00e9es de Tkinter, n&rsquo;h\u00e9sitez pas \u00e0 consulter nos autres tutoriels et ressources, comme <a href=\"https:\/\/wikiform.fr\/codespace\/introduction-a-tkinter-pour-interfaces-graphiques\">introduction \u00e0 Tkinter pour interfaces graphiques<\/a> et <a href=\"https:\/\/wikiform.fr\/codespace\/utilisation-de-elif-en-python-guide-pratique\">utilisation de elif en Python<\/a>. Vous pouvez \u00e9galement approfondir vos connaissances sur la <a href=\"https:\/\/wikiform.fr\/codespace\/saisie-avec-le-widget-entry-en-tkinter\">saisie avec le widget Entry en Tkinter<\/a> et la <a href=\"https:\/\/wikiform.fr\/codespace\/placer-des-widgets-avec-grid-en-tkinter\">disposition avec grid en Tkinter<\/a>.<\/p>\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\n\u00ab\u00a0`","protected":false},"excerpt":{"rendered":"<p>\u00ab\u00a0`html Cr\u00e9er une Fen\u00eatre avec Tkinter est une comp\u00e9tence essentielle pour d\u00e9velopper des applications GUI en Python. Tkinter est le module standard de Python pour&#8230;<\/p>\n","protected":false},"author":4,"featured_media":2912,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[18],"class_list":["post-5795","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\/5795","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=5795"}],"version-history":[{"count":1,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5795\/revisions"}],"predecessor-version":[{"id":5796,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/posts\/5795\/revisions\/5796"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media\/2912"}],"wp:attachment":[{"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/media?parent=5795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/categories?post=5795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wikiform.fr\/codespace\/wp-json\/wp\/v2\/tags?post=5795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}