{"id":1331,"date":"2020-11-29T08:50:03","date_gmt":"2020-11-29T08:50:03","guid":{"rendered":"https:\/\/www.pythontutorial.net\/?page_id=1331"},"modified":"2025-03-27T08:28:56","modified_gmt":"2025-03-27T08:28:56","slug":"tkinter-frame","status":"publish","type":"page","link":"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-frame\/","title":{"rendered":"Tkinter Frame"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you&#8217;ll learn about the Tkinter Frame and how to manipulate its attributes including sizes, paddings, and borders.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='introduction-to-tkinter-frame-widget'>Introduction to Tkinter Frame widget <a href=\"#introduction-to-tkinter-frame-widget\" class=\"anchor\" id=\"introduction-to-tkinter-frame-widget\" title=\"Anchor for Introduction to Tkinter Frame widget\">#<\/a><\/h2>\n\n\n\n<p>A frame is a widget that displays as a simple rectangle. Typically, you use a frame to organize other <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-ttk\/\">widgets<\/a> both visually and at the coding level.<\/p>\n\n\n\n<p>To create a frame, you use the <code>ttk.Frame<\/code> class:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">frame = ttk.Frame(master, **options)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>A frame has various configuration objects which determine its appearance.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Property<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code>borderwidth<\/code><\/td><td>Specify the border width of the frame. It defaults to zero<\/td><\/tr><tr><td><code>class_<\/code><\/td><td>Set widget class name<\/td><\/tr><tr><td><code>cursor<\/code><\/td><td>Change the cursor appearance when the mouse cursor is over the frame<\/td><\/tr><tr><td><code>height<\/code><\/td><td>Set the height of the frame.<\/td><\/tr><tr><td><code>padding<\/code><\/td><td>To create padding inside the frame and outside of the contained widgets.<\/td><\/tr><tr><td><code>relief<\/code><\/td><td>Specify the relief style for the border. To make it effective, you also need to set the <code>borderwidth<\/code>.<\/td><\/tr><tr><td><code>style<\/code><\/td><td>Specify custom widget custom style name<\/td><\/tr><tr><td><code>takefocus<\/code><\/td><td>A boolean value specifies whether the frame is visited during focus traversal. By default, it is <code>False<\/code>. So the frame widget does not accept focus.<\/td><\/tr><tr><td><code>width<\/code><\/td><td>Set the width of the frame.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id='frame-size'>Frame size <a href=\"#frame-size\" class=\"anchor\" id=\"frame-size\" title=\"Anchor for Frame size\">#<\/a><\/h3>\n\n\n\n<p>The size of a frame is determined by the size and layout of the widgets it contains. Also, you can explicitly specify the height and width of the frame when creating it:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">frame = ttk.Frame(master, height, width)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id='padding'>Padding <a href=\"#padding\" class=\"anchor\" id=\"padding\" title=\"Anchor for Padding\">#<\/a><\/h3>\n\n\n\n<p>The padding allows you to add extra space inside the frame and outside of the contained widgets. Paddings are in pixels. <\/p>\n\n\n\n<p>To specify padding for each side of the frame separately, you use the following:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">frame&#91;<span class=\"hljs-string\">'padding'<\/span>] = (left, top, right, bottom)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">frame&#91;<span class=\"hljs-string\">'padding'<\/span>] = (<span class=\"hljs-number\">5<\/span>,<span class=\"hljs-number\">10<\/span>,<span class=\"hljs-number\">5<\/span>,<span class=\"hljs-number\">10<\/span>)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Or you can specify paddings for the left, right and top, bottom as follows:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">frame&#91;<span class=\"hljs-string\">'padding'<\/span>] = (<span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">10<\/span>)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this example, the left and right paddings are 5 and the top and bottom paddings are 10. If the paddings of all sides are the same, you can specify the padding like this:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">frame&#91;<span class=\"hljs-string\">'padding'<\/span>] = <span class=\"hljs-number\">5<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id='frame-borders'>Frame borders <a href=\"#frame-borders\" class=\"anchor\" id=\"frame-borders\" title=\"Anchor for Frame borders\">#<\/a><\/h3>\n\n\n\n<p>By default, the border width of a frame is zero. In other words, the frame has no border.<\/p>\n\n\n\n<p>To set a border for a frame, you need to set both border&#8217;s width and style.<\/p>\n\n\n\n<p>The border&#8217;s width of a frame is in pixels. The border&#8217;s style of a frame can be flat, groove, raised, ridge, solid, or sunken. The default border style of a frame is flat. <\/p>\n\n\n\n<p>The following example sets the border width of the frame to 5 pixels and the border style of the frame to <code>sunken<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">frame&#91;<span class=\"hljs-string\">'borderwidth'<\/span>] = <span class=\"hljs-number\">5<\/span>\nframe&#91;<span class=\"hljs-string\">'relief'<\/span>] = <span class=\"hljs-string\">'sunken'<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The following picture illustrates the border styles of a frame:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"391\" height=\"195\" src=\"https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2022\/09\/tkinter-frame-border.gif\" alt=\"\" class=\"wp-image-4626\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id='tkinter-frame-example'>Tkinter Frame example <a href=\"#tkinter-frame-example\" class=\"anchor\" id=\"tkinter-frame-example\" title=\"Anchor for Tkinter Frame example\">#<\/a><\/h2>\n\n\n\n<p>We&#8217;re going to create the following <strong>Replace<\/strong> window that is quite common in text editors like Notepad:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"179\" src=\"https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2021\/01\/Tkinter-Frame-Demo.png\" alt=\"\" class=\"wp-image-2111\" srcset=\"https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2021\/01\/Tkinter-Frame-Demo.png 400w, https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2021\/01\/Tkinter-Frame-Demo-300x134.png 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/figure>\n<\/div>\n\n\n<p>To make the widgets more organized, you can divide the window into two frames: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The left frame consists of <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-label\/\">Label<\/a>, <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-entry\/\">Entry<\/a>, and <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-checkbox\/\">Checkbox<\/a> widgets. The left frame will use the <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-grid\/\">grid geometry manager<\/a> that has two columns and four rows.<\/li>\n\n\n\n<li>The right frame consists of the <code>Button<\/code> widgets. The right frame will also use the grid geometry manager that has four rows and one column.<\/li>\n<\/ul>\n\n\n\n<p>To place the left and right frames on the window, you can use the grid geometry manager that has one row and two columns:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"376\" src=\"https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2021\/01\/Tkinter-Frame-Grid.png\" alt=\"Tkinter Frame Grid\" class=\"wp-image-2202\" srcset=\"https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2021\/01\/Tkinter-Frame-Grid.png 662w, https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2021\/01\/Tkinter-Frame-Grid-300x170.png 300w\" sizes=\"auto, (max-width: 662px) 100vw, 662px\" \/><\/figure>\n\n\n\n<p>The following program illustrates how to create the <code>Replace<\/code> window above:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\"><span class=\"hljs-keyword\">import<\/span> tkinter <span class=\"hljs-keyword\">as<\/span> tk\n<span class=\"hljs-keyword\">from<\/span> tkinter <span class=\"hljs-keyword\">import<\/span> TclError, ttk\n\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">create_input_frame<\/span><span class=\"hljs-params\">(container)<\/span>:<\/span>\n\n    frame = ttk.Frame(container)\n\n    <span class=\"hljs-comment\"># grid layout for the input frame<\/span>\n    frame.columnconfigure(<span class=\"hljs-number\">0<\/span>, weight=<span class=\"hljs-number\">1<\/span>)\n    frame.columnconfigure(<span class=\"hljs-number\">0<\/span>, weight=<span class=\"hljs-number\">3<\/span>)\n\n    <span class=\"hljs-comment\"># Find what<\/span>\n    ttk.Label(frame, text=<span class=\"hljs-string\">'Find what:'<\/span>).grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">0<\/span>, sticky=tk.W)\n    keyword = ttk.Entry(frame, width=<span class=\"hljs-number\">30<\/span>)\n    keyword.focus()\n    keyword.grid(column=<span class=\"hljs-number\">1<\/span>, row=<span class=\"hljs-number\">0<\/span>, sticky=tk.W)\n\n    <span class=\"hljs-comment\"># Replace with:<\/span>\n    ttk.Label(frame, text=<span class=\"hljs-string\">'Replace with:'<\/span>).grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">1<\/span>, sticky=tk.W)\n    replacement = ttk.Entry(frame, width=<span class=\"hljs-number\">30<\/span>)\n    replacement.grid(column=<span class=\"hljs-number\">1<\/span>, row=<span class=\"hljs-number\">1<\/span>, sticky=tk.W)\n\n    <span class=\"hljs-comment\"># Match Case checkbox<\/span>\n    match_case = tk.StringVar()\n    match_case_check = ttk.Checkbutton(\n        frame,\n        text=<span class=\"hljs-string\">'Match case'<\/span>,\n        variable=match_case,\n        command=<span class=\"hljs-keyword\">lambda<\/span>: print(match_case.get()))\n    match_case_check.grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">2<\/span>, sticky=tk.W)\n\n    <span class=\"hljs-comment\"># Wrap Around checkbox<\/span>\n    wrap_around = tk.StringVar()\n    wrap_around_check = ttk.Checkbutton(\n        frame,\n        variable=wrap_around,\n        text=<span class=\"hljs-string\">'Wrap around'<\/span>,\n        command=<span class=\"hljs-keyword\">lambda<\/span>: print(wrap_around.get()))\n    wrap_around_check.grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">3<\/span>, sticky=tk.W)\n\n    <span class=\"hljs-keyword\">for<\/span> widget <span class=\"hljs-keyword\">in<\/span> frame.winfo_children():\n        widget.grid(padx=<span class=\"hljs-number\">5<\/span>, pady=<span class=\"hljs-number\">5<\/span>)\n\n    <span class=\"hljs-keyword\">return<\/span> frame\n\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">create_button_frame<\/span><span class=\"hljs-params\">(container)<\/span>:<\/span>\n    frame = ttk.Frame(container)\n\n    frame.columnconfigure(<span class=\"hljs-number\">0<\/span>, weight=<span class=\"hljs-number\">1<\/span>)\n\n    ttk.Button(frame, text=<span class=\"hljs-string\">'Find Next'<\/span>).grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">0<\/span>)\n    ttk.Button(frame, text=<span class=\"hljs-string\">'Replace'<\/span>).grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">1<\/span>)\n    ttk.Button(frame, text=<span class=\"hljs-string\">'Replace All'<\/span>).grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">2<\/span>)\n    ttk.Button(frame, text=<span class=\"hljs-string\">'Cancel'<\/span>).grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">3<\/span>)\n\n    <span class=\"hljs-keyword\">for<\/span> widget <span class=\"hljs-keyword\">in<\/span> frame.winfo_children():\n        widget.grid(padx=<span class=\"hljs-number\">5<\/span>, pady=<span class=\"hljs-number\">5<\/span>)\n\n    <span class=\"hljs-keyword\">return<\/span> frame\n\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">create_main_window<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\n    root = tk.Tk()\n    root.title(<span class=\"hljs-string\">'Replace'<\/span>)\n    root.resizable(<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>)\n    <span class=\"hljs-keyword\">try<\/span>:\n        <span class=\"hljs-comment\"># windows only (remove the minimize\/maximize button)<\/span>\n        root.attributes(<span class=\"hljs-string\">'-toolwindow'<\/span>, <span class=\"hljs-literal\">True<\/span>)\n    <span class=\"hljs-keyword\">except<\/span> TclError:\n        print(<span class=\"hljs-string\">'Not supported on your platform'<\/span>)\n\n    <span class=\"hljs-comment\"># layout on the root window<\/span>\n    root.columnconfigure(<span class=\"hljs-number\">0<\/span>, weight=<span class=\"hljs-number\">4<\/span>)\n    root.columnconfigure(<span class=\"hljs-number\">1<\/span>, weight=<span class=\"hljs-number\">1<\/span>)\n\n    input_frame = create_input_frame(root)\n    input_frame.grid(column=<span class=\"hljs-number\">0<\/span>, row=<span class=\"hljs-number\">0<\/span>)\n\n    button_frame = create_button_frame(root)\n    button_frame.grid(column=<span class=\"hljs-number\">1<\/span>, row=<span class=\"hljs-number\">0<\/span>)\n\n    root.mainloop()\n\n\n<span class=\"hljs-keyword\">if<\/span> __name__ == <span class=\"hljs-string\">\"__main__\"<\/span>:\n    create_main_window()\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Python<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">python<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, import the <code>tkinter<\/code> module and <code>tkinter.ttk<\/code> submodule:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> tkinter <span class=\"hljs-keyword\">as<\/span> tk\n<span class=\"hljs-keyword\">from<\/span> tkinter <span class=\"hljs-keyword\">import<\/span> ttk<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, create the left frame in the <code>create_input_frame()<\/code> function. The following code adds paddings to all widgets within the input_frame:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">for widget in frame.winfo_children():\n    widget.grid(padx=0, pady=5)<\/code><\/span><\/pre>\n\n\n<p>Third, create the right frame in the create_button_frame() function.<\/p>\n\n\n\n<p>Fourth, create the root window in the <code>create_main_window()<\/code> function. The following code removes the minimize\/maximize buttons from the window:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">root.attributes(<span class=\"hljs-string\">'-toolwindow'<\/span>, <span class=\"hljs-keyword\">True<\/span>)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Note that this code only works on Windows.<\/p>\n\n\n\n<p>In the <code>create_main_window()<\/code> function, we also create the left frame, and right frame, and use the grid geometry manager to arrange them on the root window.<\/p>\n\n\n\n<p>Finally, call the <code>create_main_window()<\/code> function on the <code>if __name__ == \"__main__\":<\/code> block.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='summary'>Summary <a href=\"#summary\" class=\"anchor\" id=\"summary\" title=\"Anchor for Summary\">#<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A <code>ttk.Frame<\/code> is a simple rectangle widget that can hold other widgets.<\/li>\n\n\n\n<li>Tkinter frames are used to organize user interfaces visually and at the coding level.<\/li>\n<\/ul>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful ?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"1331\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-frame\/\"\n\t\t\t\tdata-post-title=\"Tkinter Frame\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"1331\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-frame\/\"\n\t\t\t\tdata-post-title=\"Tkinter Frame\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\t\t\t<input type=\"button\" name=\"wth-submit\" class=\"wth-btn wth-btn-submit\" id=\"wth-submit\" \/>\n\t\t\t<input type=\"button\" class=\"wth-btn wth-btn-cancel\" value=\"Cancel\" \/>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you&#8217;ll learn about the Tkinter frame and how to manipulate its attributes.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1232,"menu_order":12,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1331","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/1331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/comments?post=1331"}],"version-history":[{"count":1,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/1331\/revisions"}],"predecessor-version":[{"id":7077,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/1331\/revisions\/7077"}],"up":[{"embeddable":true,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/1232"}],"wp:attachment":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/media?parent=1331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}