[Python + tkinter] LabelFrame 위젯을 사용한 중첩 구조
Python + tkinter로 GUI 앱을 코딩 할 때 빠졌습니다.
참고서도 읽지 않고 진행하고 있어, 아마 초슈퍼 초보인 이야기인 것입니다만, 모처럼이므로 남겨 두려고 생각합니다.
위 그림과 같이 LabelFrame을 중첩하여 위 1단, 하 2단에 widget을 배치하고 싶고, 아래와 같이 하면 표시가 무너져 곤란했습니다.
※기사에서는 프레임명을 윈도우의 외형에 나타내기 위해(때문에) LabelFrame로 하고 있습니다만, Frame에서도 같습니다. 편집 요청을 주신 분, 감사합니다.
wrong.py
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
frame1 = ttk.LabelFrame(root,text="FRAME1").grid(row=0,column=0)
label1 = ttk.Label(frame1,text="text1").grid(row=0,column=0)
frame2 = ttk.LabelFrame(frame1).grid(row=1,column=0)
entry1 = ttk.Entry(frame2).grid(row=0,column=0)
button1 = ttk.Button(frame2, text="BUTTON1").grid(row=0,column=1)
root.mainloop()
이런 간지
여러가지 조사해 어딘지 모르게 학습했습니다만, 중첩하는 fLabelFrame를, 차례로 닫아야 하는 것 같고, 즉 각각 내포하는 widget를 배치한 뒤로, grid 되어 pack이 되는군요.
그렇게 되어 있지 않은 소스도 산견됩니다만, 특히 중첩하는 경우는, 자신의 환경에서는 (?) 잘 작동하지 않았습니다.
correct.py
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
frame1 = ttk.LabelFrame(root,text="FRAME1")
label1 = ttk.Label(frame1,text="text1").grid(row=0,column=0)
frame2 = ttk.LabelFrame(frame1,text="FRAME2")
entry1 = ttk.Entry(frame2).grid(row=0,column=0)
button1 = ttk.Button(frame2, text="BUTTON1").grid(row=0,column=1)
frame2.grid(row=1,column=0) #frame2を配置(綴じる)
frame1.grid(row=0,column=0) #frame1を配置(綴じる)
root.mainloop()
나처럼 슈퍼 초보인 분의 참고가 되면.
Reference
이 문제에 관하여([Python + tkinter] LabelFrame 위젯을 사용한 중첩 구조), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YoichiandKomachi/items/e54bfbe49d3292351ebc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)