{"id":13436,"date":"2023-08-23T17:30:37","date_gmt":"2023-08-23T15:30:37","guid":{"rendered":"https:\/\/pythonprogramming.altervista.org\/?p=13436"},"modified":"2023-08-23T22:06:29","modified_gmt":"2023-08-23T20:06:29","slug":"open-tkinter-windows-from-pygame","status":"publish","type":"post","link":"https:\/\/pythonprogramming.altervista.org\/open-tkinter-windows-from-pygame\/","title":{"rendered":"Open tkinter windows from Pygame"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In this period we are looking at windows in tkinter<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-python-programming wp-block-embed-python-programming\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"z9shla2rDU\"><a href=\"https:\/\/pythonprogramming.altervista.org\/make-multiple-windows-with-tkinter-the-easy-way\/\">Make multiple windows with tkinter, the easy way<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Make multiple windows with tkinter, the easy way&#8221; &#8212; python programming\" src=\"https:\/\/pythonprogramming.altervista.org\/make-multiple-windows-with-tkinter-the-easy-way\/embed\/#?secret=9p7lPDF5uR#?secret=z9shla2rDU\" data-secret=\"z9shla2rDU\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-python-programming wp-block-embed-python-programming\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"JCdL4Jnc52\"><a href=\"https:\/\/pythonprogramming.altervista.org\/tkinter-many-windows-with-tkinter-when-you-start-a-script\/\">Tkinter: Many windows with tkinter when you start a script<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Tkinter: Many windows with tkinter when you start a script&#8221; &#8212; python programming\" src=\"https:\/\/pythonprogramming.altervista.org\/tkinter-many-windows-with-tkinter-when-you-start-a-script\/embed\/#?secret=0YHuMhPFHs#?secret=JCdL4Jnc52\" data-secret=\"JCdL4Jnc52\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">To create a GUI we can also use pygame, but we got to create our widgets by ouselves (even if there are libraries that have been done for this purpose).<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I made some code about buttons in pygame, some of which I modified from other coders code:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pythonprogramming.altervista.org\/button-widget-in-pygame-updated\/\" data-type=\"post\" data-id=\"13358\">Button widget in Pygame updated<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, we may think&#8230; what if we use the widgets of tkinter for pygame? Well, we cannot embed them directly into a pygame window (for what I know at least) but we can open windows of tkinter with widgets from a pygame window, for example with a basic button (it&#8217;s not as nice as the one of the previous link, I advice you, but it&#8217;s just to make the example very simple).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So here is the final result:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-127.png\"><img loading=\"lazy\" decoding=\"async\" width=\"830\" height=\"678\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-127.png\" alt=\"\" class=\"wp-image-13438\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-127.png 830w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-127-320x261.png 320w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-127-768x627.png 768w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The code<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># the repository is here: https:\/\/github.com\/formazione\/tkinter_tutorial.git\n# GiovanniPython on YT\n# @pythonprogrammi on X\n\n\nimport tkinter as tk\nfrom tkinter import messagebox\nimport pygame\n\n\nclass Window:\n\tdef __init__(self):\n\t\troot = tk.Tk()\n\t\troot.title(\"MAIN WINDOW\")\n\n\t\thello = tk.Toplevel(root)\n\t\thello.title(\"Hello\")\n\t\thello.but1 = tk.Button(hello,\n\t\t\ttext=\"Hello Button\",\n\t\t\tcommand= lambda : messagebox.showinfo(\"Hello and attention\",\n\t\t\t\t\"A button in a secundary window has been pressed abruptely!\")\n\t\t\t)\n\t\thello.but1.pack()\n\n\t\troot.mainloop()\n\npygame.init()\n\nscreen = pygame.display.set_mode((800,600))\nclock = pygame.time.Clock()\nrect = pygame.Rect(100,100,100,50)\nfont = pygame.font.SysFont(\"Arial\", 20)\nclick = font.render(\"Click me\", 1, (0,0,0))\nwhile True:\n\tfor event in pygame.event.get():\n\t\tif event.type == pygame.QUIT:\n\t\t\tpygame.quit()\n\t\t\tsys.exit()\n\t\tif event.type == pygame.MOUSEBUTTONUP:\n\t\t\tif rect.collidepoint(pygame.mouse.get_pos()):\n\t\t\t\tWindow()\n\tpygame.draw.rect(screen, (255, 255,255), rect)\n\tscreen.blit(click, rect)\n\tpygame.display.flip()\n\tclock.tick(60)\n\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The repository<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/formazione\/tkinter_tutorial.git\">https:\/\/github.com\/formazione\/tkinter_tutorial.git<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The name of the script is tkinter_pygame.py<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The code of the tkinter windows is also, without the pygame code, in toplevel_simple.py<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">If want, we can make a button class to use it as a constructor<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># the repository is here: https:\/\/github.com\/formazione\/tkinter_tutorial.git\n# GiovanniPython on YT\n# @pythonprogrammi on X\n\n\nimport tkinter as tk\nfrom tkinter import messagebox\nimport pygame\n\n\nclass Window:\n\tdef __init__(self):\n\t\troot = tk.Tk()\n\t\troot.title(\"MAIN WINDOW\")\n\n\t\thello = tk.Toplevel(root)\n\t\thello.title(\"Hello\")\n\t\thello.but1 = tk.Button(hello,\n\t\t\ttext=\"Hello Button\",\n\t\t\tcommand= lambda : messagebox.showinfo(\"Hello and attention\",\n\t\t\t\t\"A button in a secundary window has been pressed abruptely!\")\n\t\t\t)\n\t\thello.but1.pack()\n\n\t\troot.mainloop()\n\npygame.init()\n\n\nclass Button:\n\tdef __init__(self,text,pos,command):\n\t\tself.text = text\n\t\tself.command = command\n\t\tself.font = pygame.font.SysFont(\"Arial\", 20)\n\t\tself.text = self.font.render(text, 1, (0,0,0))\n\t\tself.w, self.h = self.text.get_size()\n\t\tself.x, self.y = pos\n\t\tself.rect = pygame.Rect(self.x, self.x, self.w, self.h)\n\n\tdef change_text(self, newtext):\n\t\tself.text = font.render(newtext, 1, (0,0,0))\n\n\tdef blit(self):\n\t\tpygame.draw.rect(screen, (255, 255,255), self.rect)\n\t\tscreen.blit(self.text, (self.x, self.y))\n\n\nscreen = pygame.display.set_mode((800,600))\nclock = pygame.time.Clock()\n\nbutton = Button(\"Click me\", (100,100), None)\nwhile True:\n\tfor event in pygame.event.get():\n\t\tif event.type == pygame.QUIT:\n\t\t\tpygame.quit()\n\t\t\tsys.exit()\n\t\tif event.type == pygame.MOUSEBUTTONUP:\n\t\t\tif button.rect.collidepoint(pygame.mouse.get_pos()):\n\t\t\t\tWindow()\n\tbutton.blit()\n\tpygame.display.flip()\n\tclock.tick(60)\n\n<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-129.png\"><img loading=\"lazy\" decoding=\"async\" width=\"439\" height=\"271\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-129.png\" alt=\"\" class=\"wp-image-13445\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-129.png 439w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-129-320x198.png 320w\" sizes=\"auto, (max-width: 439px) 100vw, 439px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now the size of the button is better defined, because it is generated on the base of the size of the text, so that we do not have to manually input the <strong>width <\/strong>and the <strong>height <\/strong>as it&#8217;s calculated by the <strong>get_size <\/strong>method of the <strong>Surface <\/strong>object that is generated by the render method of <strong>SysFont<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!-- se vuoi mettere un testo scorrevole\r\n[hoops name=\"typeWriterGen\"]\r\n\r\npoi metti un id diverso per ogni testo nella stessa pagina\r\n\r\n<div id=\"div01\">\r\n<script>\r\n\r\ntypeWriterGen(\"div01\",\"Esempio di testo scorrevole\");\r\n<\/script>\r\n\r\n-->\r\n<style>\r\n.avatar {\r\n  vertical-align: middle;\r\n  width: 100px;\r\n  height: 100px;\r\n  border-radius: 50%;\r\n}\r\n<\/style>\r\n\r\n<hr>\r\n\r\n<!-- NEWSLETTER LINK -->\r\n<a href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSf7TniIPCWHDzCSGh2dYZaCwDvi9yLKS5ovFdKuK1sdfOvwEg\/viewform\">\r\n<img decoding=\"async\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/08\/image-13.png\" class=\"avatar\">\r\nSubscribe to the <b>newsletter<\/b> for updates<\/a><br>\r\n\r\n<!-- TKINTER TEMPLATE LINK -->\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/tkinter-templates\/\">\r\n<img decoding=\"async\" src=\"https:\/\/i0.wp.com\/pythonprogramming.altervista.org\/wp-content\/uploads\/2023\/07\/image-26.png\" class=\"avatar\">\r\nTkinter templates<\/a><br>\r\n\r\n<!-- MY AVATAR PUT A LINK TO YOUTUBE CHANNEL-->\r\n<iframe loading=\"lazy\" frameborder=\"0\" src=\"https:\/\/itch.io\/embed\/711828\" width=\"552\" height=\"167\"><a href=\"https:\/\/pythonprogrammi.itch.io\/pysnake\">PySnake by PythonProgrammi<\/a><\/iframe>\r\n<br>\r\n<style>\r\n.avatar {\r\n  vertical-align: middle;\r\n  width: 100px;\r\n  height: 100px;\r\n  border-radius: 50%;\r\n}\r\n<\/style>\r\n\r\n\r\n<a href=\"https:\/\/www.youtube.com\/channel\/UCzbxq5e9gLiY-je2-br1rvg\">\r\n\t<img decoding=\"async\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2020\/10\/avatar64x64.png\" alt=\"Avatar\" class=\"avatar\">\r\n\t My youtube channel<\/a><br>\r\n\r\n<br>\r\n\r\nTwitter: <a href=\"https:\/\/twitter.com\/pythonprogrammi\">@pythonprogrammi - python_pygame<\/a>\r\n<h3>Claude's Games<\/h3>\r\n<p><a href=\"https:\/\/pythonprogramming.altervista.org\/random-daily-game-1-arkanoid\/\">Arkanoid<\/a><br>\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/platform-2d-with-pygame-made-with-claude\/\">Platform 2d<\/a><\/p> <!-- videogames made with claude -->\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/artifacts-games-day-1-memory-game\/\">1. Memory game<\/a>\r\n<h4>Videos<\/h4>\r\n<a href=\"https:\/\/youtu.be\/ciLjWWw5pLY\">Speech recognition game<\/a>\r\n<h3>Pygame's Platform Game<\/h3>\r\n\r\n<a href=\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-5-sounds-and-mixer\/\"><img decoding=\"async\" src=\"https:\/\/i1.wp.com\/pythonprogramming.altervista.org\/wp-content\/uploads\/2020\/01\/climbercover.png?w=557&ssl=1\"\/ width=\"50%\"><\/a>\r\n<script>\r\nvar title = \"Platform Pygame\";\r\n\t\tvar links = [\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-animation-of-a-sprite-v-1-3\/\",\"Animation 1.3\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-sprite-animation-v-2-better-coding-test-it-checking-fps-on-the-screen\/\",\"Animation 1.2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-how-to-display-the-frame-rate-fps-on-the-screen\/\",\"Display Frame rate\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-sprite-animation-update\/\",\"Animation 1.1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platformer-1\/\",\"Pygame Platform Game 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-platform-game-2\/\",\"Pygame Platform 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-3-recap-cheatsheet\/\",\"Pygame PLatform 3 - recap and some Cheat Sheet\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-4-background-and-stuffs\/\",\"Pygame Platform 4 - Background & organizing code\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platform-game-5-sounds-and-mixer\/\",\"Pygame Platform 5 - Sounds\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/platform-game-in-detail-part-1\/\",\"Game in detail part 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/map-maker-1-2\/\", \"Map maker 1.2\"]\r\n\t\t];\r\n\t\t<\/script>\r\n<script>\r\n\t\r\nif (typeof next2 != \"undefined\"){let next2 = 0;}\r\n\t\r\nnext2 = 0;\r\n\thtml = \"\";\/\/<b style='color:coral;font-size:1.2em'>Other posts about \" + title + \"<\/b><br>\";\r\nfor (address of links) \r\n{\r\n\r\n\tif (next2 == 1){\r\n\t\thtml += \"<div style='background:coral'>\";\r\n\t\thtml += \"Next link => <a href='\" + address[0] + \"'>\" + address[1] + \"<\/a>\";\r\n\t\thtml += \"<\/div><br>\";\r\n\t\tnext2 = 0;\r\n\t}\r\n\tif (address[0] == document.URL) {\r\n\t\tnext2 = 1;\r\n\t}\r\n}\r\n\r\nif (typeof next != \"undefined\") {let next = 0;}\r\nif (typeof addressStart != \"undefined\") {let addressStart = \"\";}\r\nnext = 0;\r\naddressStart = \"<a href='\";\r\nfor (address of links) {\r\n\tif (next == 1){\r\n\t\thtml += \">>>\" + addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t\tnext = 0;\r\n\t}\r\n\telse if (addressStart + address[0] != document.URL)\r\n\t{\r\n\t\thtml += addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tnext = 1;\r\n\t\tnext_address = address[0]\r\n\t\tnext_title = address[1]\r\n\t\thtml += \"<span style='color:gray'>\" + address[1] + \"<\/span><br>\";\r\n\t}\r\n\r\n}\r\n\r\n\thtml += `<span style=\"font-size:8px\">Powered by <a href=\"https:\/\/pythonprogramming.altervista.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2673\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png\" alt=\"\" width=\"70\" height=\"25\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png 156w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2-150x56.png 150w\" sizes=\"auto, (max-width: 70px) 100vw, 70px\" \/>pythonprogramming.altervista.org<\/a><\/span>`\r\n\thtml = \"<div style='background:yellow'>\" + html + \"<\/div>\";\r\n\tdocument.write(html)\r\n<\/script>\r\n\r\n<h3>Other Pygame's posts<\/h3>\r\n\r\n<script>\r\nvar title = \"Pygame's Posts\"\r\nvar links = [\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-platformer-1\/\",\"Platform game 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/make-a-platform-game-with-pygame-dafluffypotato\/\",\"DaFluffyPotato Platform Tutorials\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-and-classic-arcade-games-pong\/\",\"Pong Game Full\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/python-draws-in-colors-app-to-draw-with-pygame\/\",\"PyGameGIF 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-draw-app-with-animation\/\",\"PyGameGIF 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pydraw-2-0-app-to-draw-gif\/\",\"PyDraw 2.0\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-drawing-2\/\",\"Draw with Pygame\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/animation-with-pygame\",\"Sprite animation 1\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/animation-on-pygame-2-free-characters-and-more-actions\/\",\"Sprite animation 2\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/starting-with-pygame\/\",\"Starting movements with Pygame\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-3-move-sprite\/\", \"Move a Sprite\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-4-fonts\/\",\"Text and Fonts\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-animate-a-sprite\/\", \"Animate a sprite\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pygame-and-mouse-events\/\",\"Mouse events\"],\r\n[\"https:\/\/pythonprogramming.altervista.org\/pgp-aka-pygamepresentation-project\/\",\"Pygame presentation\"],\r\n\t[\"https:\/\/pythonprogramming.altervista.org\/moving-the-player-in-pygame-with-key-get_pressed\/\",\"How to use key.get_pressed()\"]\r\n]\r\n<\/script>\r\n\r\n\r\n<script>\r\n\t\r\nif (typeof next2 != \"undefined\"){let next2 = 0;}\r\n\t\r\nnext2 = 0;\r\n\thtml = \"\";\/\/<b style='color:coral;font-size:1.2em'>Other posts about \" + title + \"<\/b><br>\";\r\nfor (address of links) \r\n{\r\n\r\n\tif (next2 == 1){\r\n\t\thtml += \"<div style='background:coral'>\";\r\n\t\thtml += \"Next link => <a href='\" + address[0] + \"'>\" + address[1] + \"<\/a>\";\r\n\t\thtml += \"<\/div><br>\";\r\n\t\tnext2 = 0;\r\n\t}\r\n\tif (address[0] == document.URL) {\r\n\t\tnext2 = 1;\r\n\t}\r\n}\r\n\r\nif (typeof next != \"undefined\") {let next = 0;}\r\nif (typeof addressStart != \"undefined\") {let addressStart = \"\";}\r\nnext = 0;\r\naddressStart = \"<a href='\";\r\nfor (address of links) {\r\n\tif (next == 1){\r\n\t\thtml += \">>>\" + addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t\tnext = 0;\r\n\t}\r\n\telse if (addressStart + address[0] != document.URL)\r\n\t{\r\n\t\thtml += addressStart + address[0] + \"'>\" + address[1] + \"<\/a><br>\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tnext = 1;\r\n\t\tnext_address = address[0]\r\n\t\tnext_title = address[1]\r\n\t\thtml += \"<span style='color:gray'>\" + address[1] + \"<\/span><br>\";\r\n\t}\r\n\r\n}\r\n\r\n\thtml += `<span style=\"font-size:8px\">Powered by <a href=\"https:\/\/pythonprogramming.altervista.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2673\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png\" alt=\"\" width=\"70\" height=\"25\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2.png 156w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/06\/altervista2-150x56.png 150w\" sizes=\"auto, (max-width: 70px) 100vw, 70px\" \/>pythonprogramming.altervista.org<\/a><\/span>`\r\n\thtml = \"<div style='background:yellow'>\" + html + \"<\/div>\";\r\n\tdocument.write(html)\r\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"tkinter and pygame together to get their power united\n<a class=\"moretag\" href=\"https:\/\/pythonprogramming.altervista.org\/open-tkinter-windows-from-pygame\/\"> [...]<\/a>","protected":false},"author":1,"featured_media":13438,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[191,49],"tags":[52,194,4,51],"class_list":["post-13436","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pygame","category-tkinter","tag-gui","tag-pygame","tag-python","tag-tkinter"],"avopt_banners_inside_post":true,"avopt_banners_on_page":true,"av_copy_from":"","av_sharing_message":"","av_sharing_allowed":true,"av_sharing_on":{"fb":[],"tw":[]},"av_allow_affiliate_banner":false,"av_allow_affiliate_multi_banner":false,"av_show_affiliation_buy_button":false,"av_post_rating":true,"av_have_post_rating_value":false,"av_is_artificial_intelligence_content":false,"_links":{"self":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/13436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/comments?post=13436"}],"version-history":[{"count":2,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/13436\/revisions"}],"predecessor-version":[{"id":13446,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/13436\/revisions\/13446"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media\/13438"}],"wp:attachment":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media?parent=13436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/categories?post=13436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/tags?post=13436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}