{"id":1820,"date":"2020-12-25T08:06:40","date_gmt":"2020-12-25T08:06:40","guid":{"rendered":"https:\/\/www.pythontutorial.net\/?page_id=1820"},"modified":"2025-04-03T04:12:10","modified_gmt":"2025-04-03T04:12:10","slug":"tkinter-menubutton","status":"publish","type":"page","link":"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-menubutton\/","title":{"rendered":"Tkinter Menubutton"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you&#8217;ll learn how to use the Tkinter <code>Menubutton<\/code> widget.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='introduction-to-the-menubutton-widget'>Introduction to the Menubutton widget <a href=\"#introduction-to-the-menubutton-widget\" class=\"anchor\" id=\"introduction-to-the-menubutton-widget\" title=\"Anchor for Introduction to the &lt;code&gt;Menubutton&lt;\/code&gt; widget\">#<\/a><\/h2>\n\n\n\n<p>A <code>Menubutton<\/code> widget is a combination of a <code><a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-button\/\">Button<\/a><\/code> and a <code><a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-menu\/\">Menu<\/a><\/code> widget.<\/p>\n\n\n\n<p>When you click the <code>Menubutton<\/code>, it shows a menu with choices. For example:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"302\" height=\"282\" src=\"https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2020\/12\/Tkinter-Menubutton-Example.png\" alt=\"\" class=\"wp-image-1821\" srcset=\"https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2020\/12\/Tkinter-Menubutton-Example.png 302w, https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2020\/12\/Tkinter-Menubutton-Example-300x280.png 300w\" sizes=\"auto, (max-width: 302px) 100vw, 302px\" \/><\/figure>\n\n\n\n<p>To create a <code>Menubutton<\/code> widget, you follow these steps:<\/p>\n\n\n\n<p>First, create a <code>MenuButton<\/code> widget:<\/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\">menu_button = ttk.Menubutton(master, **kw)<\/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>Second, create a new instance of the <code>Menu<\/code> class:<\/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\">menu = tk.Menu(menu_button, tearoff=<span class=\"hljs-literal\">False<\/span>)<\/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<p>Third, add one or more menu items to the menu instance. And you can add <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-checkbox\/\">Checkbutton<\/a> or <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-radio-button\/\">Radiobutton<\/a> widgets to the menu.<\/p>\n\n\n\n<p>Finally, assign the <code>Menu<\/code> to the <code>MenuButton<\/code> instance:<\/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\">menu_button&#91;<span class=\"hljs-string\">\"menu\"<\/span>] = menu<\/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<h2 class=\"wp-block-heading\" id='tkinter-menubutton-widget-example'>Tkinter Menubutton widget example <a href=\"#tkinter-menubutton-widget-example\" class=\"anchor\" id=\"tkinter-menubutton-widget-example\" title=\"Anchor for Tkinter Menubutton widget example\">#<\/a><\/h2>\n\n\n\n<p>The following program shows how to use <code>Menubutton<\/code> widget. When you click the <code>MenuButton<\/code>, it&#8217;ll display a menu that consists of three choices: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Red<\/li>\n\n\n\n<li>Green<\/li>\n\n\n\n<li>Blue<\/li>\n<\/ul>\n\n\n\n<p>When you select a color, the window&#8217;s background color to that color:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"355\" height=\"303\" src=\"https:\/\/www.pythontutorial.net\/wp-content\/uploads\/2020\/12\/Tkinter-PanedWindow.gif\" alt=\"\" class=\"wp-image-1822\"\/><\/figure>\n<\/div>\n\n\n<p><\/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\"><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\n\n<span class=\"hljs-comment\"># Create the main window<\/span>\nroot = tk.Tk()\nroot.geometry(<span class=\"hljs-string\">'300x250'<\/span>)\nroot.title(<span class=\"hljs-string\">'Menubutton Demo'<\/span>)\n\n<span class=\"hljs-comment\"># Menubutton variable<\/span>\nselected_color = tk.StringVar()\nselected_color.trace_add(\n    <span class=\"hljs-string\">'write'<\/span>, \n    <span class=\"hljs-keyword\">lambda<\/span> *args: root.config(bg=selected_color.get())\n)\n\n<span class=\"hljs-comment\"># Create the menu button<\/span>\ncolors = (<span class=\"hljs-string\">'Red'<\/span>, <span class=\"hljs-string\">'Green'<\/span>, <span class=\"hljs-string\">'Blue'<\/span>)\n\n<span class=\"hljs-comment\"># Create the Menubutton<\/span>\nmenu_button = ttk.Menubutton(root, text=<span class=\"hljs-string\">'Select a color'<\/span>)\n\n<span class=\"hljs-comment\"># Create a new menu instance<\/span>\nmenu = tk.Menu(menu_button, tearoff=<span class=\"hljs-number\">0<\/span>)\n\n<span class=\"hljs-keyword\">for<\/span> color <span class=\"hljs-keyword\">in<\/span> colors:\n    menu.add_radiobutton(\n        label=color,\n        value=color,\n        variable=selected_color\n    )\n\n\nmenu_button&#91;<span class=\"hljs-string\">\"menu\"<\/span>] = menu\nmenu_button.pack(expand=<span class=\"hljs-literal\">True<\/span>)\n\n<span class=\"hljs-comment\"># Show the main window<\/span>\nroot.mainloop()<\/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>How it works.<\/p>\n\n\n\n<p>First, define a <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-stringvar\/\">string variable<\/a> object that tracks the selected value of the menu:<\/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\">selected_color = tk.StringVar()<\/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>When the color changes, the background color will change to the new color accordingly:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">selected_color.trace_add(\n    <span class=\"hljs-string\">'write'<\/span>, \n    lambda *args: root.config(bg=selected_color.get())\n)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><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 a menu button:<\/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\">menu_button = ttk.Menubutton(\n    root, \n    text=<span class=\"hljs-string\">'Select a color'<\/span>\n)<\/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>Third, create a new menu and associate the <code>Menubutton<\/code> object with the <code>Menu<\/code> object:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">menu = tk.Menu(menu_button, tearoff=<span class=\"hljs-keyword\">False<\/span>)\nmenu_button&#91;<span class=\"hljs-string\">\"menu\"<\/span>] = menu<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><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>Fourth, add three <code>Radiobutton<\/code> widgets based on the <code>colors<\/code> tuple to the menu:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">colors = (<span class=\"hljs-string\">'Red'<\/span>, <span class=\"hljs-string\">'Green'<\/span>, <span class=\"hljs-string\">'Blue'<\/span>)\n<span class=\"hljs-keyword\">for<\/span> color <span class=\"hljs-keyword\">in<\/span> colors:\n    menu.add_radiobutton(\n        label=color,\n        value=color,\n        variable=selected_color\n    )<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><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>When you select a menu item, the value of the <code>self.selected_color<\/code> variable changes to the value of the selected menu item.<\/p>\n\n\n\n<p>Finally, <a href=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-pack\/\">pack<\/a> the menu button on the main window and show it:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Python\" data-shcb-language-slug=\"python\"><span><code class=\"hljs language-python\">menu_button.pack(expand=<span class=\"hljs-literal\">True<\/span>)\nroot.mainloop()<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><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<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>Use Tkinter <code>Menubutton<\/code> widget to create a menu associated with a button.<\/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=\"1820\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-menubutton\/\"\n\t\t\t\tdata-post-title=\"Tkinter Menubutton\"\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=\"1820\"\n\t\t\t\tdata-post-url=\"https:\/\/www.pythontutorial.net\/tkinter\/tkinter-menubutton\/\"\n\t\t\t\tdata-post-title=\"Tkinter Menubutton\"\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 how to use the Tkinter Menubutton widget.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1232,"menu_order":38,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1820","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/1820","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=1820"}],"version-history":[{"count":1,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/1820\/revisions"}],"predecessor-version":[{"id":7395,"href":"https:\/\/www.pythontutorial.net\/wp-json\/wp\/v2\/pages\/1820\/revisions\/7395"}],"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=1820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}