MENU

 

메뉴 위젯은 메뉴에 메뉴 그룹을 추가하는 방식으로 되어있다. 파일 메뉴가 있으면, [신규, 저장, 열기 ... ] 이렇게 묶어서 계층을 만든다.

 

그밖에는 다른 위젯들과 비슷한 방식을 따른다. 마지막에 config 메소드를 호출하여 최상위 메뉴(mainmenu)를 등록해야 메뉴가 나타난다.

 

import tkinter as tk

def test():
    print("Menu Pressed")

root = tk.Tk()
root.geometry('320x240')
root.title('Tkinter Test')

mainmenu = tk.Menu(root)

# FILE MENU
filem = tk.Menu(mainmenu, tearoff = 0)
filem.add_command(label = 'NEW', command = test)
filem.add_command(label = 'OPEN', command = test)
filem.add_command(label = 'SAVE', command = test)
filem.add_separator()
filem.add_command(label = 'EXIT', command = test)
mainmenu.add_cascade(label ='FILE', menu = filem)

filem2 = tk.Menu(mainmenu, tearoff = 0)
filem2.add_command(label = 'UNDO', command = test)
filem2.add_command(label = 'CUT', command = test)
filem2.add_command(label = 'COPY', command = test)
filem2.add_command(label = 'PASTE', command = test)
mainmenu.add_cascade(label ='EDIT', menu = filem2)

root.config(menu = mainmenu)
root.mainloop()

메뉴 만들기 GUI

 

MENU BUTTON

 

메뉴는 메뉸데 버튼으로 만든 매뉴이다. 프레임 안에 메뉴가 들어가 있다.(메뉴와의 차이점) 메뉴처럼 메뉴버튼에 항목들을 추가시켜야 된다.

import tkinter as tk

root = tk.Tk()
root.geometry('320x240')
root.title('Tkinter Test')
frame = tk.Frame(root)
frame.pack()

menubtn = tk.Menubutton(frame,text = "BROWSER", relief = "groove")

var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()

menu1 = tk.Menu(menubtn)

menu1.add_checkbutton(label="CHROME", variable = var1)
menu1.add_checkbutton(label="SAFARI", variable = var2)
menu1.add_checkbutton(label="MS EDGE", variable = var3)

menubtn["menu"] = menu1

menubtn.pack()
root.mainloop()

메뉴버튼

Combo Box

콤보박스이다. 다른 위젯들과 같다.

import tkinter as tk
import tkinter.ttk as ttk

def getcombo():
    print(combo1.get())

root = tk.Tk()
root.geometry('320x240')
root.title('Tkinter Test')
frame = tk.Frame(root)
frame.pack()

list1 = ['item1',
         'item2',
         'item3',
         'item4',
         'item5',
         ]

combo1 = ttk.Combobox(frame, values = list1)
combo1.set("Pick an Item")
combo1.pack(pady = 10)

btn = tk.Button(frame,text="OKAY", command = getcombo)
btn.pack()
root.mainloop()

 

 

List Box

리스트박스이다. 리스트 박스는 나열된 항목을 한번에 보여주는 장점이 있다.

import tkinter as tk

def settest():
    print(listbox.curselection())

root = tk.Tk()
root.geometry('320x240')
root.title('Tkinter Test')
frame = tk.Frame(root)
frame.pack()

listbox = tk.Listbox(root)

listbox.insert(1,"APPLE")
listbox.insert(2,"BANANA")
listbox.insert(3,"ORANGE")
listbox.insert(4,"KIWI")
listbox.insert(5,"MANGO")
listbox.pack()

btn = tk.Button(frame,text="OKAY", command = settest)
btn.pack()
root.mainloop()

리스트박스

 

TopLevel

탑레벨 객체는 윈도우창을 하나 더 띄울때 사용한다. 메인 윈도우(root 라고 부르는)의 경우는 종료하면 모든 윈도우가 종료되는데 TopLevel 윈도우는 종료되도 자신의 위젯들만 종료된다. root의 서브 윈도우다. 서브 창이 필요할 때 사용한다.

 

import tkinter as tk

def set_test():
    win2 = tk.Toplevel()
    win2.geometry('200x150')
    label = tk.Label(win2, text = 'This is 2nd Window')
    label.pack(pady = 20)

root = tk.Tk()
root.geometry('320x240')
root.title('Tkinter Test')

frame = tk.Frame(root)
frame.pack()

btn = tk.Button(frame,text="OKAY", command = set_test)
btn.pack(pady = 20)
root.mainloop()

TopLevel 윈도우

공유하기

facebook twitter kakaoTalk kakaostory naver band