{"id":2678,"date":"2019-08-06T08:05:50","date_gmt":"2019-08-06T06:05:50","guid":{"rendered":"https:\/\/pythonprogramming.altervista.org\/?p=2678"},"modified":"2021-01-03T09:18:55","modified_gmt":"2021-01-03T08:18:55","slug":"create-more-windows-with-tkinter","status":"publish","type":"post","link":"https:\/\/pythonprogramming.altervista.org\/create-more-windows-with-tkinter\/","title":{"rendered":"Create more windows with tkinter"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">One thing that I think could be useful is to create more windows using tkinter for a program to make it easy to manage different things to do, without having to put too many stuffs in the same window. So here is the final code, after the image of the windows generated in the example:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First you create the main window<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:default decode:true\">import tkinter as tk\n\nclass Win1:\n\tdef __init__(self, master):\n\t\tself.master = master\n\t\tself.master.geometry(\"400x400\")\n\t\tself.frame = tk.Frame(self.master)\n\t\tself.butnew(\"Click to open Window 2\", \"2\", Win2)\n\t\tself.butnew(\"Click to open Window 3\", \"3\", Win3)\n\t\tself.frame.pack()\n\n\tdef butnew(self, text, number, _class):\n\t\ttk.Button(self.frame, text = text, command= lambda: self.new_window(number, _class)).pack()\n\n\tdef new_window(self, number, _class):\n\t\tself.new = tk.Toplevel(self.master)\n\t\t_class(self.new, number)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">There is a way to open different windows through buttons writing less code:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>butnew to create a button that opens a new window calling new_window function<\/li><li>new_window is called clicking the button<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For every new window you need to create a new class (passed as argument in butnew function) like this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/pyl.png\"><img loading=\"lazy\" decoding=\"async\" width=\"76\" height=\"55\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/pyl.png\" alt=\"\" class=\"wp-image-2691\"\/><\/a><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted lang:default decode:true\">class Win2:\n\tdef __init__(self, master, number):\n\t\tself.master = master\n\t\tself.master.geometry(\"400x400+200+200\")\n\t\tself.frame = tk.Frame(self.master)\n\t\tself.quit = tk.Button(self.frame, text = f\"Quit this window n. {number}\", command = self.close_window)\n\t\tself.quit.pack()\n\t\tself.frame.pack()\n\n\tdef close_window(self):\n\t\tself.master.destroy()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Why not to create another window, being so easy?<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/more_windows.png\"><img loading=\"lazy\" decoding=\"async\" width=\"652\" height=\"358\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/more_windows.png\" alt=\"\" class=\"wp-image-2692\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/more_windows.png 652w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/more_windows-320x176.png 320w\" sizes=\"auto, (max-width: 652px) 100vw, 652px\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-preformatted lang:default decode:true\">class Win3:\n\tdef __init__(self, master, number):\n\t\tself.master = master\n\t\tself.master.geometry(\"400x400+200+200\")\n\t\tself.frame = tk.Frame(self.master)\n\t\tself.quit = tk.Button(self.frame, text = f\"Quit this window n. {number}\", command = self.close_window)\n\t\tself.quit.pack()\n\t\tself.label = tk.Label(self.frame, text=\"THIS IS ONLY IN THE THIRD WINDOW\")\n\t\tself.label.pack()\n\t\tself.frame.pack()\n\n\tdef close_window(self):\n\t\tself.master.destroy()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And you can go on this way further writing all the windows you need.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">at the end you create an istance of the first window in this loop:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:default decode:true\">root = tk.Tk()\napp = Win1(root)\nroot.mainloop()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You will find the code below, after this image, and the video with the live coding too.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/tk_windows.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"573\" height=\"515\" src=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/tk_windows.jpg\" alt=\"\" class=\"wp-image-2700\" srcset=\"https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/tk_windows.jpg 573w, https:\/\/pythonprogramming.altervista.org\/wp-content\/uploads\/2019\/08\/tk_windows-320x288.jpg 320w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-preformatted lang:default decode:true\">import tkinter as tk\n\nclass Win1:\n\tdef __init__(self, master):\n\t\tself.master = master\n\t\tself.master.geometry(\"400x400\")\n\t\tself.frame = tk.Frame(self.master)\n\t\tself.butnew(\"Click to open Window 2\", \"2\", Win2)\n\t\tself.butnew(\"Click to open Window 3\", \"3\", Win3)\n\t\tself.frame.pack()\n\n\tdef butnew(self, text, number, _class):\n\t\ttk.Button(self.frame, text = text, command= lambda: self.new_window(number, _class)).pack()\n\n\tdef new_window(self, number, _class):\n\t\tself.new = tk.Toplevel(self.master)\n\t\t_class(self.new, number)\n\nclass Win2:\n\tdef __init__(self, master, number):\n\t\tself.master = master\n\t\tself.master.geometry(\"400x400+200+200\")\n\t\tself.frame = tk.Frame(self.master)\n\t\tself.quit = tk.Button(self.frame, text = f\"Quit this window n. {number}\", command = self.close_window)\n\t\tself.quit.pack()\n\t\tself.frame.pack()\n\n\tdef close_window(self):\n\t\tself.master.destroy()\n\nclass Win3:\n\tdef __init__(self, master, number):\n\t\tself.master = master\n\t\tself.master.geometry(\"400x400+200+200\")\n\t\tself.frame = tk.Frame(self.master)\n\t\tself.quit = tk.Button(self.frame, text = f\"Quit this window n. {number}\", command = self.close_window)\n\t\tself.quit.pack()\n\t\tself.label = tk.Label(self.frame, text=\"THIS IS ONLY IN THE THIRD WINDOW\")\n\t\tself.label.pack()\n\t\tself.frame.pack()\n\n\n\tdef close_window(self):\n\t\tself.master.destroy()\n\nroot = tk.Tk()\napp = Win1(root)\nroot.mainloop()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Video: making multiple windows with Python and tkinter<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Create multiple windows with Tkinter in Python\" width=\"747\" height=\"420\" src=\"https:\/\/www.youtube.com\/embed\/3QwUcp0uwWY?feature=oembed&amp;enablejsapi=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">P.S.: in the video there is a little mistake; the label in the third window must be attached to self.frame and not to master. So I changed in the code above:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">self.label = tk.Label(<span style=\"text-decoration: underline overline wavy red;\">master<\/span>, text=&#8221;THIS IS ONLY IN THE THIRD WINDOW&#8221;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">with<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">self.label = tk.Label(<span style=\"text-decoration: underline overline dotted blue;\">self.frame<\/span>, text=&#8221;THIS IS ONLY IN THE THIRD WINDOW&#8221;)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Some restyling of the code<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted lang:default decode:true\">import tkinter as tk\n\n\nclass Win1:\n    def __init__(self, master):\n        self.master = master\n        self.master.geometry(\"400x300\")\n        self.show_widgets()\n\n    def show_widgets(self):\n        self.frame = tk.Frame(self.master)\n        self.master.title(\"Window n.1\")\n        self.create_button(\"Click to open Window 2\", Win2)\n        self.create_button(\"Click to open Window 3\", Win3)\n        self.frame.pack()\n\n    def create_button(self, text, _class):\n        \"Button that creates a new window\"\n        tk.Button(\n            self.frame, text=text,\n            command=lambda: self.new_window(_class)).pack()\n\n    def new_window(self, _class):\n        self.win = tk.Toplevel(self.master)\n        _class(self.win)\n\n\nclass Win2(Win1):\n    def __init__(self, master):\n        self.master = master\n        self.master.title(\"Window n.2\")\n        self.master.geometry(\"400x100+200+200\")\n        self.show_widgets()\n\n    def show_widgets(self):\n        \"A frame with a button to quit the window\"\n        self.frame = tk.Frame(self.master, bg=\"red\")\n        self.quit_button = tk.Button(\n            self.frame, text=f\"Quit this window n. 2\",\n            command=self.close_window)\n        self.quit_button.pack()\n        self.create_button(\"Open window 3 from window 2\", Win3)\n        self.frame.pack()\n\n    def close_window(self):\n        self.master.destroy()\n\n\nclass Win3(Win1):\n    def __init__(self, master):\n        self.master = master\n        self.master.title(\"Window n.3\")\n        self.master.geometry(\"400x200+200+200\")\n        self.show_widgets()\n\n    def show_widgets(self):\n        self.frame = tk.Frame(self.master, bg=\"green\")\n        self.quit = tk.Button(\n            self.frame, text=f\"Quit this window n. 3\",\n            command=self.close_window)\n        self.quit.pack()\n        self.label = tk.Label(\n            self.frame, text=\"THIS IS ONLY IN THE THIRD WINDOW\")\n        self.label.pack()\n        self.frame.pack()\n\n    def close_window(self):\n        self.master.destroy()\n\n\nroot = tk.Tk()\napp = Win1(root)\nroot.mainloop()\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Optimizing code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Since we do not need some stuff inherited by the main class, we will have this 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=\"\">import tkinter as tk\n\n\nclass Win1:\n    def __init__(self, master):\n        self.master = master\n        self.master.geometry(\"400x300\")\n        self.show_widgets()\n\n    def show_widgets(self):\n        self.frame = tk.Frame(self.master)\n        self.master.title(\"Window n.1\")\n        self.create_button(\"Click to open Window 2\", Win2)\n        self.create_button(\"Click to open Window 3\", Win3)\n        self.frame.pack()\n\n    def create_button(self, text, _class):\n        \"Button that creates a new window\"\n        tk.Button(\n            self.frame, text=text,\n            command=lambda: self.new_window(_class)).pack()\n\n    def new_window(self, _class):\n        self.win = tk.Toplevel(self.master)\n        _class(self.win)\n\n    def close_window(self):\n        self.master.destroy()\n\nclass Win2(Win1):\n\n    def show_widgets(self):\n        \"A frame with a button to quit the window\"\n        self.frame = tk.Frame(self.master, bg=\"red\")\n        self.quit_button = tk.Button(\n            self.frame, text=f\"Quit this window n. 2\",\n            command=self.close_window)\n        self.quit_button.pack()\n        self.create_button(\"Open window 3 from window 2\", Win3)\n        self.frame.pack()\n\n\n\nclass Win3(Win2):\n\n    def show_widgets(self):\n        self.frame = tk.Frame(self.master, bg=\"green\")\n        self.quit_button = tk.Button(\n            self.frame, text=f\"Quit this window n. 3\",\n            command=self.close_window)\n        self.label = tk.Label(\n            self.frame, text=\"THIS IS ONLY IN THE THIRD WINDOW\")\n        self.label.pack()\n        self.frame.pack()\n\n\n\nroot = tk.Tk()\napp = Win1(root)\nroot.mainloop()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Now you can open the windows only once (specific) at the time<\/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=\"\">import tkinter as tk\n\n\nclass Win1:\n    def __init__(self, master):\n        self.master = master\n        self.master.geometry(\"400x300\")\n        self.show_widgets()\n\n    def show_widgets(self):\n        self.frame = tk.Frame(self.master)\n        self.master.title(\"Window n.1\")\n        self.create_button(\"Click to open Window 2\", Win2)\n        self.create_button(\"Click to open Window 3\", Win3)\n        self.frame.pack()\n\n    def create_button(self, text, _class):\n        \"Button that creates a new window\"\n        tk.Button(\n            self.frame, text=text,\n            command=lambda: self.new_window(_class)).pack()\n\n    def new_window(self, _class):\n            global win2, win3\n\n            try:\n                if _class == Win2:\n                    if win2.state() == \"normal\":\n                        win2.focus()\n            except:  \n                win2 = tk.Toplevel(self.master)\n                _class(win2)\n\n            try:\n                if _class == Win3:\n                    if win3.state() == \"normal\":\n                        win3.focus()\n            except:  \n                win3 = tk.Toplevel(self.master)\n                _class(win3)\n\n    def close_window(self):\n        self.master.destroy()\n\nclass Win2(Win1):\n\n    def show_widgets(self):\n        \"A frame with a button to quit the window\"\n        self.master.title(\"Window 2\")\n        self.frame = tk.Frame(self.master, bg=\"red\")\n        self.quit_button = tk.Button(\n            self.frame, text=f\"Quit this window n. 2\",\n            command=self.close_window)\n        self.quit_button.pack()\n        self.create_button(\"Open window 3 from window 2\", Win3)\n        self.frame.pack()\n\n\n\nclass Win3(Win2):\n\n    def show_widgets(self):\n        self.master.title(\"Window 3\")\n        self.frame = tk.Frame(self.master, bg=\"green\")\n        self.quit_button = tk.Button(\n            self.frame, text=f\"Quit this window n. 3\",\n            command=self.close_window)\n        self.label = tk.Label(\n            self.frame, text=\"THIS IS ONLY IN THE THIRD WINDOW\")\n        self.label.pack()\n        self.frame.pack()\n\n\n\nroot = tk.Tk()\napp = Win1(root)\nroot.mainloop()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pythonprogramming.altervista.org\/more-windows-with-tkinter-new-version\/\">This is it<\/a><\/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=\"cSA4ypuAYf\"><a href=\"https:\/\/pythonprogramming.altervista.org\/more-windows-with-tkinter-new-version\/\">More windows with tkinter (new version)<\/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;More windows with tkinter (new version)&#8221; &#8212; python programming\" src=\"https:\/\/pythonprogramming.altervista.org\/more-windows-with-tkinter-new-version\/embed\/#?secret=pmIaXwHtHA#?secret=cSA4ypuAYf\" data-secret=\"cSA4ypuAYf\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n<!-- 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>\n","protected":false},"excerpt":{"rendered":"Open more tkinter windows\n<a class=\"moretag\" href=\"https:\/\/pythonprogramming.altervista.org\/create-more-windows-with-tkinter\/\"> [...]<\/a>","protected":false},"author":1,"featured_media":2690,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[1,49],"tags":[492,4,51,54],"class_list":["post-2678","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-examples","category-tkinter","tag-multiple-windows","tag-python","tag-tkinter","tag-windows"],"avopt_banners_inside_post":true,"avopt_banners_on_page":true,"av_copy_from":"","av_sharing_message":"","av_sharing_allowed":false,"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\/2678","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=2678"}],"version-history":[{"count":16,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/2678\/revisions"}],"predecessor-version":[{"id":8110,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/posts\/2678\/revisions\/8110"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media\/2690"}],"wp:attachment":[{"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/media?parent=2678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/categories?post=2678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pythonprogramming.altervista.org\/wp-json\/wp\/v2\/tags?post=2678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}