Tkinter Menubutton

2024. 3. 24. 17:05GUI/tkinter

요약 : 이 튜토리얼에서는 Tkinter Menubutton 위젯을 사용하는 방법을 배우게 됩니다.

Menubutton 위젯은 Button 와 Menu 위젯의 조합입니다.

Menubutton을 클릭하면 선택 항목이 있는 메뉴가 표시됩니다.
예를 들어:

 

 

Menubutton 위젯을 만들려면 다음 단계를 따르세요.

먼저 MenuButton 위젯을 만듭니다.

menu_button = ttk.Menubutton(container, **options)

둘째, Menu 클래스의 새 인스턴스를 만듭니다.

menu = tk.Menu(menu_button, tearoff=False)

셋째, 메뉴 인스턴스에 하나 이상의 메뉴 항목을 추가합니다. 그리고 메뉴에 체크버튼이나 라디오버튼 위젯을 추가할 수 있습니다.

마지막으로 MenuButton 인스턴스에 Menu를 할당합니다.

 

 

import tkinter as tk
from tkinter import ttk


class App(tk.Tk):
    def __init__(self):
        super().__init__()

        self.geometry('300x250')
        self.title('Menubutton Demo')

        # Menubutton variable
        self.selected_color = tk.StringVar()
        self.selected_color.trace("w", self.menu_item_selected)

        # create the menu button
        self.create_menu_button()

    def menu_item_selected(self, *args):
        """ handle menu selected event """
        self.config(bg=self.selected_color.get())

    def create_menu_button(self):
        """ create a menu button """
        # menu variable
        colors = ('Red', 'Green', 'Blue')

        # create the Menubutton
        menu_button = ttk.Menubutton(
            self,
            text='Select a color')

        # create a new menu instance
        menu = tk.Menu(menu_button, tearoff=0)

        for color in colors:
            menu.add_radiobutton(
                label=color,
                value=color,
                variable=self.selected_color)

        # associate menu with the Menubutton
        menu_button["menu"] = menu

        menu_button.pack(expand=True)


if __name__ == "__main__":
    app = App()
    app.mainloop()

 

동작 방식.

 init() 메서드에서는 메뉴에서 선택한 값을 추적하는 변수를 정의합니다.

self.selected_color = tk.StringVar()
self.selected_color.trace("w", self.menu_item_selected)

selected_color 값이 변경되면, menu_item_selected 메소드가 실행됩니다.

이 create_menu_button()메서드는 MenuButton을 생성합니다.

먼저 메뉴버튼을 만듭니다.

menu_button = ttk.Menubutton(
     self,
     text='Select a color')

그런 다음 새 메뉴를 만들고, colors 튜플에서 파생된 세 개의 Radiobutton 위젯을 메뉴에 추가합니다.

# create a new menu instance
menu = tk.Menu(menu_button, tearoff=0)

for color in colors:
     menu.add_radiobutton(
         label=color,
         value=color,
         variable=self.selected_color)

메뉴 항목을 선택하면, self.selected_color 변수 값이 선택한 메뉴 항목의 값으로 변경됩니다.

마지막으로 메뉴를 Menu에button연결합니다.

menu_button["menu"] = menu

요약

  • Tkinter Menubutton 위젯을 사용하여 버튼과 관련된 메뉴를 만듭니다.

 

'GUI > tkinter' 카테고리의 다른 글

Tkinter Example  (0) 2024.03.26
Tkinter OptionMenu  (0) 2024.03.26
Tkinter Menu  (0) 2024.03.23
Tkinter Open File Dialog  (0) 2024.03.22
Tkinter Color Chooser  (0) 2024.03.21