{"id":38,"date":"2021-08-30T07:21:18","date_gmt":"2021-08-30T07:21:18","guid":{"rendered":"https:\/\/christoph-schmalfuss.de\/blog\/?p=38"},"modified":"2021-10-22T11:08:02","modified_gmt":"2021-10-22T11:08:02","slug":"python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2","status":"publish","type":"post","link":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/","title":{"rendered":"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\u00fcr Anf\u00e4ngerinnen und Anf\u00e4nger | Teil 2 \ud83d\udd22"},"content":{"rendered":"\n<p><a href=\"https:\/\/christoph-schmalfuss.de\/blog\/?p=28\" data-type=\"post\" data-id=\"28\">Im ersten Tutorial<\/a> haben wir bereits ein h\u00fcbsches Userinterface erzeugt. Und heute bringen wir dem Taschenrechner endlich wirklich bei, zu rechnen. <\/p>\n\n\n\n<p>Grunds\u00e4tzlich wird der Rechner so funktionieren, dass wir eine Zeichenkette festlegen, die aus all den Buttons besteht, die gedr\u00fcckt wurden. Am Anfang wird die Zeichenkette leer sein. Wenn der Nutzer dann z.B. die 5 auf dem Userinterface dr\u00fcckt, wird die 5 zu dieser Zeichenkette hinzugef\u00fcgt. Wenn der Nutzer + dr\u00fcckt, wird entsprechend ein + hinzugef\u00fcgt usw. Das = bekommt bei uns eine besondere Bedeutung. Wenn das gedr\u00fcckt wird, schnappt sich Python die eingegebene Zeichenkette und berechnet sie. <\/p>\n\n\n\n<p>Und noch eine Taste bekommt eine Sonderrolle, n\u00e4mlich AC. Mit der Taste wird die Zeichenkette geleert, und eine neue Berechnung kann beginnen.<\/p>\n\n\n\n<p>Als erstes brauchen wir also eine leere Zeichenkette.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>calculation = str()<\/code><\/pre><\/div>\n\n\n\n<p>Als n\u00e4chstes basteln wir uns eine Funktion, die den Wert des Buttons an die Zeichenkette weitergibt. <\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>def add_button_text_to_calculation(value):\n    global calculation\n\n    calculation = calculation + value\n    output_label[&#39;text&#39;] = calculation<\/code><\/pre><\/div>\n\n\n\n<p>F\u00fcr die Buttons AC und = m\u00fcssen wir noch ein paar Sonderf\u00e4lle einbauen. Wenn der Button AC gedr\u00fcckt wird, soll die Berechnung abgebrochen werden. Und wenn das <strong>=<\/strong> gedr\u00fcckt wird, soll die Zeichenkette berechnet werden. <\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>def add_button_text_to_calculation(value):\n    global calculation\n\n    # AC (also known as &#39;ALL CLEAR&#39;) will clear the current calculation.\n    if value == &#39;AC&#39;:\n        calculation = str()\n        output_label[&#39;text&#39;] = &#39;...&#39;\n        return\n\n    if value == &#39;=&#39;:\n        calculate(calculation)\n        calculation = str()\n        return\n\n    calculation = calculation + value\n    output_label[&#39;text&#39;] = calculation<\/code><\/pre><\/div>\n\n\n\n<p>Jetzt schreiben wir die Funktion, die aus der Zeichenkette eine Berechnung macht &#8211;  und das Ergebnis berechnet. Daf\u00fcr nutzen wir die eval Funktion. Sorgt daf\u00fcr, dass Python eine Zeichenkette nicht einfach als eine Reihe von zusammengew\u00fcrfelten Zeichen versteht, sondern das Python diese Zeichen so behandelt, als w\u00e4ren es echte Python Befehle. <\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>def calculate(calc):\n    try:\n        result = eval(calc)\n        print(result)\n        output_label[&#39;text&#39;] = result\n<\/code><\/pre><\/div>\n\n\n\n<p>Wichtig an der Stelle: Wenn der User irgendwelchen Quatsch eingetippt hat, dann soll unser Taschenrechner nicht abst\u00fcrzen, sondern einen Fehler zur\u00fcckgeben. Daf\u00fcr schreiben wir eine Exception, also eine Ausnahme.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>\n    except Exception as e:\n        print(e)\n        output_label[&#39;text&#39;] = &#39;Error&#39;<\/code><\/pre><\/div>\n\n\n\n<p>In einem letzten Schritt m\u00fcssen die Buttons erfahren, was sie eigentlich tun sollen. Und deshalb bringen wir ihnen jetzt bei, ihren Wert in die Zeichenkette zu \u00fcbergeben. Die entsprechende Funktion haben wir ja schon geschrieben, das war &#8222;add_button_text_to_calculation&#8220;. Wir verkn\u00fcpfen jetzt also alle Buttons mit dieser Funktion. Daf\u00fcr legen wir einfach ein Command, also einen Befehl fest.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>def create_button(value):\n    button = tkinter.Button(text=value, command=lambda: add_button_text_to_calculation(value))\n    gui_items.append(button)<\/code><\/pre><\/div>\n\n\n\n<p>Falls ihr euch \u00fcber den Begriff lambda wundert &#8211; mit diesem erzeugen wir eine anonyme Funktion. Anonym hei\u00dft diese Funktion, weil sie selbst keinen Namen tr\u00e4gt, sondern stattdessen den Platzhalternamen lambda hat. Das ist nochmal ein ganz eigenes Thema, und deshalb verlinke ich euch in der Videobeschreibung ein Tutorial, das darauf nochmal genauer eingeht. <\/p>\n\n\n\n<p>Was aber trotzdem wichtig ist, ist die Frage, warum wir hier \u00fcberhaupt eine neue lambda-Funktion definieren m\u00fcssen, obwohl wir ja eigentlich schon eine Funktion haben, n\u00e4mlich add_button_text_to_calculation. Der Grund daf\u00fcr ist, dass wir ja wollen, dass die Funktion erst dann aufgerufen wird, wenn der Button gedr\u00fcckt wird &#8211; und nicht schon dann, wenn Python zum ersten Mal den Code interpretiert. W\u00fcrde ich lambda jetzt weglassen, w\u00fcrde genau das passierten. Python w\u00fcrde bei interpretieren des Codes die Funktion ausl\u00f6sen, ohne dass ich den Button gedr\u00fcckt hab.<\/p>\n\n\n\n<p>Wenn lambda allerdings dabei ist ist, dann ist das hier keine Zeile mehr, in der eine Funktion aufgerufen wird, sondern es ist eben eine Zeile, in der eine Funktion definiert wird. Und wie wir wissen, werden Funktionen beim Definieren noch nicht aufgerufen, sondern erst dann, wenn wir es wollen. Somit kann Python diesen Code interpretieren, ohne dass die Funktion aufgerufen wird. Und wenn wir den Button klicken, wird die Funktion dann tats\u00e4chlich aufgerufen. <\/p>\n\n\n\n<p>Und damit haben wir es geschafft.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 Kompletter Quellcode<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import tkinter\n\nwindow = tkinter.Tk()\nwindow.geometry(&#39;150x220&#39;)\nwindow.title(&#39;Rechner&#39;)\n\ngui_items = list()\nbutton_values = [&#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;0&#39;,\n                 &#39;+&#39;, &#39;-&#39;, &#39;*&#39;, &#39;\/&#39;, &#39;=&#39;, &#39;AC&#39;]\n\ncalculation = str()\n\n\ndef add_button_text_to_calculation(value):\n    global calculation\n\n    # AC (also known as &#39;ALL CLEAR&#39;) will clear the current calculation.\n    if value == &#39;AC&#39;:\n        calculation = str()\n        output_label[&#39;text&#39;] = &#39;...&#39;\n        return\n\n    if value == &#39;=&#39;:\n        calculate(calculation)\n        calculation = str()\n        return\n\n    calculation = calculation + value\n    output_label[&#39;text&#39;] = calculation\n\n\ndef calculate(calc):\n    try:\n        result = eval(calc)\n        print(result)\n        output_label[&#39;text&#39;] = result\n\n    except Exception as e:\n        print(e)\n        output_label[&#39;text&#39;] = &#39;Error&#39;\n\n\ndef create_button(value):\n    button = tkinter.Button(text=value, command=lambda: add_button_text_to_calculation(value))\n    gui_items.append(button)\n\n\nfor val in button_values:\n    create_button(val)\n\n\noutput_label = tkinter.Label(text=&#39;Hallo.&#39;)\noutput_label.grid(row=0, columnspan=10)\n\n# All buttons will be auto-placed in a grid\n# with maximum 3 columns and endless rows here:\ncolumn_count = 0\nrow_count = 1\nmaximum_columns = 3\n\nfor item in gui_items:\n    item.grid(row=row_count, column=column_count)\n\n    column_count += 1\n    if column_count == maximum_columns:\n        column_count = 0\n        row_count += 1\n\n\nif __name__ == &#39;__main__&#39;:\n    window.mainloop()\n<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Tutorial haben wir bereits ein h\u00fcbsches Userinterface erzeugt. Und heute bringen wir dem Taschenrechner endlich wirklich bei, zu&hellip;<\/p>\n","protected":false},"author":1,"featured_media":82,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-38","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gui-graphical-user-interface"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\u00fcr Anf\u00e4ngerinnen und Anf\u00e4nger | Teil 2 \ud83d\udd22 &mdash; Programmieren mit Chris<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-\ud83d\udd22\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\u00fcr Anf\u00e4ngerinnen und Anf\u00e4nger | Teil 2 \ud83d\udd22 &mdash; Programmieren mit Chris\" \/>\n<meta property=\"og:description\" content=\"Im ersten Tutorial haben wir bereits ein h\u00fcbsches Userinterface erzeugt. Und heute bringen wir dem Taschenrechner endlich wirklich bei, zu&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-\ud83d\udd22\/\" \/>\n<meta property=\"og:site_name\" content=\"Programmieren mit Chris\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-30T07:21:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-22T11:08:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@chrischmayt\" \/>\n<meta name=\"twitter:site\" content=\"@chrischmayt\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"chris\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#organization\",\"name\":\"Programmieren mit Chris\",\"url\":\"https:\/\/christoph-schmalfuss.de\/blog\/\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/christoph-schmalfu\\u00df-52a93b209\/\",\"https:\/\/www.youtube.com\/channel\/UC0faHRYVxDn7chW573SSh8A\",\"https:\/\/twitter.com\/chrischmayt\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#logo\",\"inLanguage\":\"de\",\"url\":\"http:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/programmieren-mit-chris-logo-ohne-schatten-3000x3000-transparent.png\",\"contentUrl\":\"http:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/programmieren-mit-chris-logo-ohne-schatten-3000x3000-transparent.png\",\"width\":3000,\"height\":3000,\"caption\":\"Programmieren mit Chris\"},\"image\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#website\",\"url\":\"https:\/\/christoph-schmalfuss.de\/blog\/\",\"name\":\"Programmieren lernen mit Chris\",\"description\":\"Tutorials | Vlogs\",\"publisher\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/christoph-schmalfuss.de\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#primaryimage\",\"inLanguage\":\"de\",\"url\":\"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png\",\"contentUrl\":\"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png\",\"width\":1280,\"height\":720},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#webpage\",\"url\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/\",\"name\":\"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\\u00fcr Anf\\u00e4ngerinnen und Anf\\u00e4nger | Teil 2 \\ud83d\\udd22 &mdash; Programmieren mit Chris\",\"isPartOf\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#primaryimage\"},\"datePublished\":\"2021-08-30T07:21:18+00:00\",\"dateModified\":\"2021-10-22T11:08:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/christoph-schmalfuss.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\\u00fcr Anf\\u00e4ngerinnen und Anf\\u00e4nger | Teil 2 \\ud83d\\udd22\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#webpage\"},\"author\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#\/schema\/person\/b64d7415ba9ac63f395509d7097012bb\"},\"headline\":\"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\\u00fcr Anf\\u00e4ngerinnen und Anf\\u00e4nger | Teil 2 \\ud83d\\udd22\",\"datePublished\":\"2021-08-30T07:21:18+00:00\",\"dateModified\":\"2021-10-22T11:08:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#webpage\"},\"wordCount\":590,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png\",\"articleSection\":[\"GUI (Graphical User Interface)\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#\/schema\/person\/b64d7415ba9ac63f395509d7097012bb\",\"name\":\"chris\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/christoph-schmalfuss.de\/blog\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/176e906a49456dda30761449564e6e69d6b070f731880e6ace0d8e2d1746f1b6?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/176e906a49456dda30761449564e6e69d6b070f731880e6ace0d8e2d1746f1b6?s=96&d=retro&r=g\",\"caption\":\"chris\"},\"sameAs\":[\"http:\/\/christoph-schmalfuss.de\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\u00fcr Anf\u00e4ngerinnen und Anf\u00e4nger | Teil 2 \ud83d\udd22 &mdash; Programmieren mit Chris","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-\ud83d\udd22\/","og_locale":"de_DE","og_type":"article","og_title":"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\u00fcr Anf\u00e4ngerinnen und Anf\u00e4nger | Teil 2 \ud83d\udd22 &mdash; Programmieren mit Chris","og_description":"Im ersten Tutorial haben wir bereits ein h\u00fcbsches Userinterface erzeugt. Und heute bringen wir dem Taschenrechner endlich wirklich bei, zu&hellip;","og_url":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-\ud83d\udd22\/","og_site_name":"Programmieren mit Chris","article_published_time":"2021-08-30T07:21:18+00:00","article_modified_time":"2021-10-22T11:08:02+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png","path":"\/var\/www\/virtual\/schmalin\/html\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png","size":"full","id":82,"alt":"","pixels":921600,"type":"image\/png"}],"twitter_card":"summary_large_image","twitter_creator":"@chrischmayt","twitter_site":"@chrischmayt","twitter_misc":{"Verfasst von":"chris","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#organization","name":"Programmieren mit Chris","url":"https:\/\/christoph-schmalfuss.de\/blog\/","sameAs":["https:\/\/www.linkedin.com\/in\/christoph-schmalfu\u00df-52a93b209\/","https:\/\/www.youtube.com\/channel\/UC0faHRYVxDn7chW573SSh8A","https:\/\/twitter.com\/chrischmayt"],"logo":{"@type":"ImageObject","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#logo","inLanguage":"de","url":"http:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/programmieren-mit-chris-logo-ohne-schatten-3000x3000-transparent.png","contentUrl":"http:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/programmieren-mit-chris-logo-ohne-schatten-3000x3000-transparent.png","width":3000,"height":3000,"caption":"Programmieren mit Chris"},"image":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#logo"}},{"@type":"WebSite","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#website","url":"https:\/\/christoph-schmalfuss.de\/blog\/","name":"Programmieren lernen mit Chris","description":"Tutorials | Vlogs","publisher":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/christoph-schmalfuss.de\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"ImageObject","@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#primaryimage","inLanguage":"de","url":"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png","contentUrl":"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png","width":1280,"height":720},{"@type":"WebPage","@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#webpage","url":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/","name":"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\u00fcr Anf\u00e4ngerinnen und Anf\u00e4nger | Teil 2 \ud83d\udd22 &mdash; Programmieren mit Chris","isPartOf":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#primaryimage"},"datePublished":"2021-08-30T07:21:18+00:00","dateModified":"2021-10-22T11:08:02+00:00","breadcrumb":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/christoph-schmalfuss.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\u00fcr Anf\u00e4ngerinnen und Anf\u00e4nger | Teil 2 \ud83d\udd22"}]},{"@type":"Article","@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#article","isPartOf":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#webpage"},"author":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#\/schema\/person\/b64d7415ba9ac63f395509d7097012bb"},"headline":"Python tkinter | Taschenrechner programmieren | GUI Tutorial (Deutsch) | f\u00fcr Anf\u00e4ngerinnen und Anf\u00e4nger | Teil 2 \ud83d\udd22","datePublished":"2021-08-30T07:21:18+00:00","dateModified":"2021-10-22T11:08:02+00:00","mainEntityOfPage":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#webpage"},"wordCount":590,"commentCount":0,"publisher":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/#organization"},"image":{"@id":"https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#primaryimage"},"thumbnailUrl":"https:\/\/christoph-schmalfuss.de\/blog\/wp-content\/uploads\/2021\/08\/Thumbnail-taschenrechner.png","articleSection":["GUI (Graphical User Interface)"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/christoph-schmalfuss.de\/blog\/2021\/08\/30\/python-tkinter-taschenrechner-programmieren-gui-tutorial-deutsch-fuer-anfaengerinnen-und-anfaenger-teil-2-%f0%9f%94%a2\/#respond"]}]},{"@type":"Person","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#\/schema\/person\/b64d7415ba9ac63f395509d7097012bb","name":"chris","image":{"@type":"ImageObject","@id":"https:\/\/christoph-schmalfuss.de\/blog\/#personlogo","inLanguage":"de","url":"https:\/\/secure.gravatar.com\/avatar\/176e906a49456dda30761449564e6e69d6b070f731880e6ace0d8e2d1746f1b6?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/176e906a49456dda30761449564e6e69d6b070f731880e6ace0d8e2d1746f1b6?s=96&d=retro&r=g","caption":"chris"},"sameAs":["http:\/\/christoph-schmalfuss.de\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":2,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":40,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/posts\/38\/revisions\/40"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/media\/82"}],"wp:attachment":[{"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/christoph-schmalfuss.de\/blog\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}