오늘은 주말이니 파이썬으로 gui프로그래밍을 집중해서 공부하고 있어요
파이썬으로 알람을 만들어보고싶어서 아주 쥐똥만큼이라도 꾸준히 하려고 노력하고 있습니다.(퇴근하고 공부하기 넘 힘들어ㅠㅠㅠ)
grid()로 버튼을 배치하는 것에 대해 공부하고 있는 중 뜬금없이 오류가 났어요!
분명히 강사님과 똑같이 했는데 왜 저만 오류가 났는지 그 원인에 대해 간단히 찾아봤어요.
- 내가 친 오류 코드
from tkinter import *
root = Tk()
root.geometry("350x430")
# 15. 스크롤바 : 스크롤바와 대상이 되는 위젯을 하나의 프레임에 넣는게 관리하기 좋다.
frame = Frame(root)
frame.pack()
scrollbar = Scrollbar(frame)
scrollbar.pack(side="right", fill ="y") # 스크롤바 세로로 꽉 차도록 해줌
# set 없으면 내려가지 않음
listbox = Listbox(frame,selectmode="extended", height =10,yscrollcommand=scrollbar.set)
for i in range(1,32):
listbox.insert(END, str(i)+"일")
listbox.pack(side="left")
scrollbar.config(command = listbox.yview)
'''
listbox => yscrollcommand = scrollar.set
scrollbar.config(command= listbox.yview)
서로 매핑시켜줘야함
'''
# 17, 18. 그리드
# 애플 키보드 일부분 만들기
btn_f16= Button(root, text="F16")
btn_f17= Button(root, text="F17")
btn_f18= Button(root, text="F18")
btn_f19= Button(root, text="F19")
btn_f16.grid(row=0, column= 0)
btn_f17.grid(row=0, column= 1)
btn_f18.grid(row=0, column= 2)
btn_f19.grid(row=0, column= 3)
root.mainloop()
- 오류내용
tkinter.TclError: cannot use geometry manager grid inside.
which already has slaves managed by pack
pack으로 관리되고 있기때문에 grid를 쓸 수 없다는 걸로 해석이 되는데요
stackoverflow에서도 저같은 오류가 난 사람들이 있었기에 그에 대한 답변을 보면
"Never mix grid and pack in the same master window. " 라고 하더라구요.
그러면 앞에 pack이 있는 스크롤바 내용을 아예 없애버리면 오류가 안날까요?
- 수정 후 코드
from tkinter import *
root = Tk()
root.geometry("350x430")
# 17, 18. 그리드
# 애플 키보드 일부분 만들기
btn_f16= Button(root, text="F16")
btn_f17= Button(root, text="F17")
btn_f18= Button(root, text="F18")
btn_f19= Button(root, text="F19")
btn_f16.grid(row=0, column= 0)
btn_f17.grid(row=0, column= 1)
btn_f18.grid(row=0, column= 2)
btn_f19.grid(row=0, column= 3)
root.mainloop()
- 코드 수정 후 결과
pack()을 없애버리니 바로 버튼이 나타나네요!! 세상에...
그러면 pack과 grid를 함께 쓰지 못해도 gui로 뭔가 만들 때는 불편함이 없을지 궁금하네요
어쨌거나 오류는 해결했지만 나중에 왜 같이 사용하지 못하는지 알아보면 좋을 것 같아요
그럼 이만!
'Python' 카테고리의 다른 글
[python_gui] frame 예쁘게 조정하기 (0) | 2020.10.01 |
---|---|
[python_gui] DoubelVar()가 뭐였지? (0) | 2020.10.01 |
[Hang Man] 게임 만들기_구상, 모르는 것 메모 (0) | 2020.09.07 |
[Python] 오늘의 오류 - 구문오류 (0) | 2020.08.08 |
[Python-5] 숫자처리함수, 랜덤함수 (0) | 2020.08.03 |