Tkinter OptionMenu

2024. 3. 26. 18:22GUI/tkinter

 

요약 : 이 튜토리얼에서는 드롭다운 메뉴에 옵션 세트를 표시하는 Tkinter OptionMenu 위젯에 대해 배웁니다.

Tkinter OptionMenu 위젯 소개

OptionMenu 위젯은 드롭다운 메뉴에서 미리 정의된 옵션 세트를 제공합니다.

새 OptionMenu 위젯을 만들려면, OptionMenu 생성자를 사용합니다.

OptionMenu(container, variable, default=None, *values, **kwargs)

OptionMenu 생성자는 다음과 같은 여러 매개변수를 허용합니다.

  • container는 OptionMenu 위젯의 상위 위젯입니다.
  • variable은 OptionMenu의 현재 선택된 옵션을 보유하는 tk.StringVar 개체 입니다.
  • default는 위젯이 처음에 표시하는 기본 옵션입니다.
  • values는 드롭다운 메뉴에 나타나는 값 목록입니다.
  • kwargs는 위젯별 구성입니다.

OptionMenu는 direction 옵션을 통해 드롭다운 메뉴의 방향을 변경할 수 있습니다. 유효한 방향은 'above', 'below', 'left', 'right'또는 'flush'입니다.

OptionMen 위젯은 command 옵션도 지원합니다. 이를 통해 항목이 선택된 후 호출될 콜백을 할당할 수 있습니다.

다른 ttk 위젯과 마찬가지로 style 옵션을 사용하여 OptionMenu의 스타일 이름을 지정할 수 있습니다.

Tkinter OptionMenu위젯 예

다음 예에서는 OptionMenu 위젯을 사용하는 방법을 보여줍니다. 항목을 선택하면 선택 항목이 라벨에 표시됩니다.

In [ ]:
import tkinter as tk
from tkinter import ttk


class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.geometry("320x80")
        self.title('Tkinter OptionMenu Widget')

        # initialize data
        self.languages = ('Python', 'JavaScript', 'Java',
                        'Swift', 'GoLang', 'C#', 'C++', 'Scala')

        # set up variable
        self.option_var = tk.StringVar(self)

        # create widget
        self.create_wigets()

    def create_wigets(self):
        # padding for widgets using the grid layout
        paddings = {'padx': 5, 'pady': 5}

        # label
        label = ttk.Label(self,  text='Select your most favorite language:')
        label.grid(column=0, row=0, sticky=tk.W, **paddings)

        # option menu
        option_menu = ttk.OptionMenu(
            self,
            self.option_var,
            self.languages[0],
            *self.languages,
            command=self.option_changed)

        option_menu.grid(column=1, row=0, sticky=tk.W, **paddings)

        # output label
        self.output_label = ttk.Label(self, foreground='red')
        self.output_label.grid(column=0, row=1, sticky=tk.W, **paddings)

    def option_changed(self, *args):
        self.output_label['text'] = f'You selected: {self.option_var.get()}'


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

 

 

 

동작 방식.

먼저 OptionMenu 위젯에 표시하는 데 사용되는 문자열 목록을 정의합니다.

self.languages = ('Python', 'JavaScript', 'Java', 'Swift', 'GoLang', 'C#', 'C++', 'Scala')

둘째, init() 메소드에서 OptionMenu의 현재 선택된 항목을 보유하는 ttk.StringVar() 객체를 정의합니다.

self.option_var = tk.StringVar(self)

셋째, OptionMenu 위젯의 새 인스턴스를 만듭니다.

 

option_menu = ttk.OptionMenu(
     self,
     self.option_var,
     self.languages[0],
     *self.languages,
     command=self.option_changed)

기본값 self.languages[0]을 건너뛰면,OptionMenu의 첫 번째 항목이 사라집니다.

항목이 선택된 후에 option_changed() 메소드가 실행됩니다. 이 메서드는 선택한 항목에 output_label를 위한 텍스트를 설정합니다 .

self.output_label['text'] = f'You selected: {self.option_var.get()}'

요약

  • 드롭다운 메뉴에서 사용자에게 고정된 선택 항목 세트를 제공하려면 Tkinter OptionMenu 위젯을 사용하십시오 .
  • 항상 OptionMenu 생성자의 기본값을 지정하십시오.

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

Tkinter Themes  (0) 2024.03.27
Tkinter Example  (0) 2024.03.26
Tkinter Menubutton  (0) 2024.03.24
Tkinter Menu  (0) 2024.03.23
Tkinter Open File Dialog  (0) 2024.03.22