반응형
예전에 테스트삼아 해봤는데, 오랫만에 하니까 잘 모르는 것도 있고, 좀 바뀐 부분도 있어서 정리도 할겸 올립니다. 아래와 같은 tkinter 화면을 만들겁니다.
1. main.py
우선 main.py에서는 구동만 시켜주고, 화면을 구성하는 파일은 gui.py로 별도 모듈로 만들 예정입니다.
import gui
if __name__ == '__main__':
gui.main_screen()
2. gui.py
import tkinter as tk
def main_screen():
root = tk.Tk()
root.title("GUI Sample")
root.geometry("640x480+100+100")
root.resizable(True,True)
root.configure(background='white') # 배경을 흰색으로 하고,
# root.wm_attributes("-transparentcolor", 'white') # 흰색을 투명으로 하면 투명한 앱이 됩니다.
#레이블
label_1=tk.Label(root, text="위젯 테스트", width=20,height=3,fg="red",relief="solid")
label_1.pack()
label_2=tk.Label(root, text="위젯 테스트2", width=20, height=3, fg="blue", relief="groove")
label_2.pack()
#리스트박스
listbox = tk.Listbox(root, selectmode='extended', height=0)
listbox.insert(0, "no1")
listbox.insert(1, "no2")
listbox.insert(2, "no3")
listbox.insert(3, "no4")
listbox.insert(4, "no5")
listbox.pack()
#체크박스
checkVal1 = tk.IntVar()
checkVal2 = tk.IntVar()
checkBtn1 = tk.Checkbutton(root, text="체크박스 고르기1", variable=checkVal1, activebackground="blue")
checkBtn2 = tk.Checkbutton(root, text="체크박스 고르기2", variable=checkVal2, activebackground="blue")
checkBtn1.pack()
checkBtn2.pack()
#라디오버튼
radioVal1=tk.IntVar()
radioBtn1 = tk.Radiobutton(root, text="1번", value=3, variable=radioVal1)
radioBtn2 = tk.Radiobutton(root, text="2번", value=6, variable=radioVal1)
radioBtn3 = tk.Radiobutton(root, text="3번", value=9, variable=radioVal1)
radioBtn1.pack()
radioBtn2.pack()
radioBtn3.pack()
#상단메뉴
def close():
root.quit()
root.destroy()
menubar = tk.Menu(root)
menu_1 = tk.Menu(menubar, tearoff=0)
menu_1.add_command(label="Sub Menu1-1")
menu_1.add_command(label="Sub Menu1-2")
menu_1.add_separator()
menu_1.add_command(label="종료", command=close)
menubar.add_cascade(label="Menu1", menu=menu_1)
menu_2 = tk.Menu(menubar, tearoff=0, selectcolor="red")
menu_2.add_radiobutton(label="Sub Menu2-1", state="disable")
menu_2.add_radiobutton(label="Sub Menu2-2")
menu_2.add_radiobutton(label="Sub Menu2-3")
menubar.add_cascade(label="Menu2", menu=menu_2)
menu_3 = tk.Menu(menubar, tearoff=0)
menu_3.add_checkbutton(label="Sub Menu3-1")
menu_3.add_checkbutton(label="Sub Menu3-2")
menu_3.add_checkbutton(label="Sub Menu3-3")
menubar.add_cascade(label="Menu3", menu=menu_3)
root.config(menu=menubar)
# 메뉴 버튼 (상단 메뉴바랑 상관 없음)
menubutton = tk.Menubutton(root, text="Menu Button", relief="raised", direction="right")
menubutton.pack()
menu = tk.Menu(menubutton, tearoff=0)
menu.add_command(label="Sub-1")
menu.add_separator()
menu.add_command(label="Sub-2")
menu.add_command(label="Sub-3")
menubutton["menu"] = menu
# 배치연습
bb1=tk.Button(root, text="(50,50)")
bb1.place(x=50,y=50)
bb2 = tk.Button(root, text="(130,50)",width=10, height=1)
bb2.place(x=130, y=50)
bb3 = tk.Button(root, text="(50,100)", border=3)
bb3.place(x=50, y=100)
bb4 = tk.Button(root, text="(130,100)")
bb4.place(x=130, y=100)
root.mainloop()
반응형
'Programming > Python_Etc' 카테고리의 다른 글
Tkinter 위젯 배치 스터디 - frame (0) | 2024.04.02 |
---|---|
Tkinter 위젯 배치 스터디 - grid / pack / place (0) | 2024.03.29 |
파이썬 데이터분석 1 openpyxl로 엑셀 다루기 (0) | 2023.07.14 |
파이썬보다 35,000배 빠른 언어 모조 (Mojo) (0) | 2023.07.13 |
머신러닝(ML) 알고리즘 알고리즘 카테고리 분류 - 지도학습, 비지도학습, 강화학습 (0) | 2023.05.18 |