문제

TK에서 크기가 어떻게 전파되는지에 대해 뭔가를 놓치고 있습니다. 이 시도:

from Tkinter import *

root = Tk()

frame1 = Frame(root, border=4, relief=RIDGE)
frame1.grid(sticky=E+W)
frame2 = Frame(root, border=4, relief=RIDGE)
frame2.grid(sticky=E+W)

label1 = Label(frame1, text='short', background='white')
label1.grid(sticky=E+W)
label2 = Label(frame2, text='quite a bit longer', background='white')
label2.grid(sticky=E+W)

root.mainloop()

레이블 1은 frame1 내부에 있고 Label2는 Frame2 내부에 있습니다. 레이블 1은 흰색 배경에서 볼 수 있듯이 레이블 2보다 좁아집니다. 그러나 프레임 1과 프레임 2는 경계에서 볼 수있는 너비와 동일합니다. 나는 끈적 거림이 Label1을 부모와 같은 너비로 확장 할 것이라고 생각했습니다.

label1과 label2를 같은 프레임 안에 넣으면 Label1이 Label2만큼 넓게 나옵니다.

frame1 = Frame(root, border=4, relief=RIDGE)
frame1.grid(sticky=E+W)

label1 = Label(frame1, text='short', background='white')
label1.grid(sticky=E+W)
label2 = Label(frame1, text='quite a bit longer', background='white')
label2.grid(sticky=E+W)

내가 무엇을 놓치고 있습니까? 실제로, 나는 내가 원하는대로 확장되지 않는 쌓인 중첩 프레임이 있습니다.

감사합니다, 댄

도움이 되었습니까?

해결책

행과 열에는 "무게"가있어 마스터의 여분의 공간을 채우기 위해 자라는 방법을 설명합니다. 기본적으로 행 또는 열에 무게가 0 인 경우 라벨에 열을 채우라고 지시했지만 칼럼에 마스터 프레임을 채우라고 말하지 않았습니다.

이것을 고치려면 열에 무게를주십시오. 긍정적 인 정수는이 특정한 경우에 할 것입니다.

frame1.columnconfigure(0, weight=1)
frame2.columnconfigure(0, weight=1)

자세한 내용은 grid, Ruby, TCL, Perl 및 Python의 예제와 함께 tkdocs.com의 그리드 페이지

다른 팁

열과 프레임이있는이 솔루션은 작동하지만 그리드에서 동일한 너비를 갖도록 라벨을 얻으려면 둘러싸는 프레임이 필요하지 않습니다. 아래 예를 참조하십시오

from tkinter import *

root = Tk()

label1 = Label(root, text='short', bg='light green', relief=RIDGE)
label1.grid(sticky=E+W)
label2 = Label(root, text='quite a bit longer', bg='light green', relief=RIDGE)
label2.grid(sticky=E+W)

root.mainloop()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top