지난 포스팅
지난 포스팅에서는 체크박스 및 체크박스의 상태 초기화, 체크박스 command에 함수를 붙여보는 연습을 했습니다.
2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 16. 체크박스에 함수 붙여보기
이번 포스팅에서는 : sticky로 위젯 상하좌우 정렬
위젯의 너비나 높이가 다르기 때문에, GUI 안에 위젯들을 배치하다 보면
마치 뒤죽박죽처럼 꼬여 보일 수가 있어요.
완벽한 해결책은 아니지만 sticky가 어느 정도 깔끔한 레이아웃을 그려줄 수 있어요.
sticky인자는 할당된 grid 안에서 좌우 또는 상하로 정렬을 해 주거든요.
예시를 들어보겠습니다.
import tkinter as tk
win = tk.Tk()
tk.Label(win, text="상당히 길어 공간을 많이 차지하는 레이블").grid(row=0, column=0)
tk.Checkbutton(win, text="체크박스1").grid(row=1, column=0)
tk.Checkbutton(win, text="체크박스2").grid(row=2, column=0)
win.mainloop()
win 창 안에 차례대로 레이블 하나와 체크버튼 두 개를 생성했습니다.
실행해보면
체크박스 두 개가 자동으로 중앙정렬 되었는데, 별로 보기가 좋지 않네요.
두 개의 체크박스를 (그리드 안에서) 왼쪽으로 붙이고 싶습니다.
그러면 grid() 안에 sticky="w" 파라미터를 주시면 돼요.
w는 동서남북의 서(west)쪽을 가리키는 "w"입니다.
그럼 오른쪽은 "e", 위쪽은 "n", 아래쪽은 "s"라는 걸 단번에 아시겠지요?ㅎ
그럼 sticky 인자를 주고 다시 실행해볼까요?
import tkinter as tk
win = tk.Tk()
tk.Label(win, text="상당히 길어 공간을 많이 차지하는 레이블").grid(row=0, column=0)
tk.Checkbutton(win, text="체크박스1").grid(row=1, column=0, sticky='w') # <---
tk.Checkbutton(win, text="체크박스2").grid(row=2, column=0, sticky='w') # <---
win.mainloop()
실행해보면
이번에도 도전과제를 하나 드리겠습니다.
아래와 같은 GUI를 완성해보세요.
힌트는 columnspan입니다. (제 포스팅에서는 다루지 않았습니다. 직접 검색을 해보시기 바랍니다.)
풀어보셨나요?
예시 코드는 아래에 남겨둡니다.
import tkinter as tk
win = tk.Tk()
tk.Label(win, text="상당히 길어 공간을 많이 차지하는 레이블").grid(row=0, column=0, columnspan=2)
tk.Checkbutton(win, text="체크박스1").grid(row=1, column=0, sticky='w')
tk.Checkbutton(win, text="체크박스2").grid(row=1, column=1, sticky='e')
win.mainloop()
columnspan 인자는 칼럼을 몇 개나 차지할 것인지 정해줍니다. (기본값은 1이겠죠?)
Label의 grid는 (행 0, 열 0)인데, columnspan이 2(두 칸)이니까 (0,0)과 (0,1)을 모두 차지하겠다는 뜻이에요.
체크버튼은 각각 (1, 0), (1, 1)을 한 칸씩 차지하고요.
마지막으로 왼쪽 체크버튼은 왼쪽(w)으로 정렬, 오른쪽 체크버튼은 오른쪽(e)으로 정렬했습니다.
실행해보면,
긴 설명이 필요없는 간단한 개념이라서 도전과제로 넣어보았습니다.
시리즈 중간 즈음에
어느덧 tkinter 관련한 포스팅이 스무 개 가까이 쌓이고 있네요.
서두에서도 이야기한 바 있지만, 이 포스팅 시리즈는
제가 최근까지 접했던 GUI 강의들이 너무 어려워서 만들게 되었어요.
저는 GUI를 잘 만들어보고 싶어서 책도 여러 권 읽었고, 온라인강의도 제법 들었는데
하나같이 가장 어려웠던 부분이 다름아닌 "기나긴 예제를 읽고 이해하기"였어요.
실무에서 사용할 법한 예제를 엄선해 주시는 건 강사와 저자 분들께 넘 감사했지만,
GUI를 이해하기 위해 재무제표를 만들어야 한다든지, 네트워크를 이해해야 한다는 건
제게는 정말 어려웠거든요..
그래서 이렇게 실속없이 제 방식대로
핵심예제와 개념만 짧게 보여드리는 강의를 만들어보고 싶었어요.
모든 분들의 마음에 쏙 들진 않겠지만,
저와 비슷한 어느 분들께는 꼭 도움이 되었으면 좋겠습니다.
재미있게 읽어주셨다면, 혹은 제안 주실 게 있다면
공감과 댓글로 피드백 주시면 넘넘 감사하겠습니다.
질문도 환영합니다.
그럼 다음 포스팅으로 넘어가봅시다.
다음 포스팅
2022.11.17 - [기타/tkinter 한꼬집씩만 따라해보기] - 18. 라디오버튼 만들기
'GUI 튜토리얼 > tkinter 한꼬집씩만 따라해보기' 카테고리의 다른 글
18. 라디오버튼 만들기 (0) | 2022.11.17 |
---|---|
16. 체크박스에 함수 붙여보기 (0) | 2022.11.16 |
15. 체크버튼에 기본값 부여하기(선택상태) (0) | 2022.11.16 |
댓글