본문 바로가기
GUI 튜토리얼/tkinter 한꼬집씩만 따라해보기

20. 텍스트박스 만들기

by 일코 2022. 11. 18.

지난 포스팅

2022.11.18 - [기타/tkinter 한꼬집씩만 따라해보기] - 19. 라디오버튼 선택에 따라 작동하는 함수 추가하기

 

19. 라디오버튼 선택에 따라 작동하는 함수 추가하기

지난 포스팅 2022.11.17 - [기타/tkinter 한꼬집씩만 따라해보기] - 18. 라디오버튼 만들기 18. 라디오버튼 만들기 지난 포스팅 2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 17. sticky로 위젯 정렬하기

martinii.fun


 

이번 포스팅에서는 : 텍스트박스 만들기

import tkinter as tk

win = tk.Tk()

tk.Text(win).grid(row=0, column=0)

win.mainloop()

 

이번 포스팅에서 소개하는 위젯은 바로 "텍스트박스"입니다.

튜토리얼 초반에 설명드렸던 엔트리 위젯과 비슷하게 문자열을 입력받는 위젯이에요.

엔트리와 가장 큰 차이점은 "줄바꿈이 가능하다"는 거겠죠.

위 코드를 실행해보면

굉장히 간단하게 생성할 수 있죠?

다만, 텍스트위젯은 기본적으로 좀 크게 뽑히는 경향이 있어서

기본적으로 width와 height를 지정해 주는 것이 좋습니다.

"너비는 30, 높이는 3 정도가 기본 크기로 적당하다"고 말씀하시는 분들이 있었는데

저도 (특별한 경우가 아니라면) 이 정도가 보기 좋고 적당해 보이는 것 같습니다.

위의 움짤을 끝까지 보셨다면,

텍스트 라인수가 위젯 높이를 넘어가도 스크롤바가 나타나지 않는다는 점을 발견하셨을 겁니다.

사실, tkinter에서는 사용자 편의상 자동으로 스크롤바가 붙는 텍스트 위젯을 기본제공하고 있습니다.

바로, tkinter.scrolledtext.Scrolledtext 클래스입니다.

Scrolledtext 위젯에 대해서는 바로 다음 포스팅에서 다루겠습니다.

 

한 가지 재미있는 점은, tkinter에서 Scrollbar라는 위젯도 별도로 제공하고 있다는 사실인데요.

이 Scrollbar 위젯을 통해서 기본 텍스트위젯 우측에 직접 스크롤바를 붙일 수가 있습니다.

아래 접힌 글은 읽지 않으셔도 괜찮지만, 호기심이 든다면 한 번 펼쳐서 읽어보시기를 추천드립니다.

더보기
"""
앞의 텍스트 위젯은 많은 글자를 타이핑할 때
스크롤바가 나타나지 않고 그냥 위로 사라져버려서 불편한 점이 많다.
사실 스크롤바를 직접 추가하려면 다소 복잡한 코딩을 해야 하는데..
아래 코드는 읽어보지 않아도 된다.
다음 포스팅에서 스크롤바가 포함된 ScrolledText 클래스를 사용할 거니까.
"""


import tkinter as tk

win = tk.Tk()

scrollbar = tk.Scrollbar(win)  # 스크롤바 위젯 생성
scrollbar.grid(row=0, column=1, sticky="ns")  # scrollbar.pack(side="right", fill="y") 와 동일

text = tk.Text(win, yscrollcommand=scrollbar.set)  # 텍스트에 따라 스크롤바가 움직이는 커맨드
text.grid(row=0, column=0, sticky="ew")  # text.pack(side="left", fill="both") 와 동일
scrollbar.config(command=text.yview)  # 스크롤바를 조작하면 텍스트창이 반응하는 커맨드 추가

win.mainloop()

특이한 점 하나만 짚어보면,

스크롤바를 붙이는데 command 명령어는 텍스트위젯과 스크롤바위젯 두 군데 다 붙여야 합니다.

왜 그럴까요?

간단히 말씀드리면 텍스트 위젯과 스크롤바 위젯 두 군데에서 모두 이벤트가 발생하기 가능하기 때문입니다.

예를 들어 scrollbar.config(command=text.yview) 라인을 빼고 실행하면

마우스로 스크롤바를 조작할 수 없게 됩니다. 아래 움짤처럼요.

그럼 다음 포스팅에서 scrolledtext 위젯에 대해 다루겠습니다.

 


다음 포스팅

2022.11.18 - [기타/tkinter 한꼬집씩만 따라해보기] - 21. 스크롤바 기본제공 텍스트 위젯 - Scrolledtext

 

댓글