내 이해로는 __init__
메서드에서 모든 프레임과 위젯을 초기화 한 후 tkinter 창이 이러한 모든 구성 요소에 맞게 크기가 조정되는 것으로 알고 있습니다.
창의 초기화 크기를 최소 크기로 설정하고 싶습니다. 창을 최대화하고 크기를 조정할 수 있기를 원하지만 위젯을 숨길 수 있을 정도로 창이 작아지는 것은 절대 원하지 않습니다.
이 작업을 수행하려면 어떻게 해야 하나요?
또한 다음과 같은 방법을 사용하여 메인루프에 들어가지 않고 바로 업데이트를 강제 적용할 수도 있습니다:
root = Tk()
# set up widgets here, do your grid/pack/place
# root.geometry() will return '1x1+0+0' here
root.update()
# now root.geometry() returns valid size/placement
root.minsize(root.winfo_width(), root.winfo_height())
effbot tkinterbook의 update()에 대한 설명:
모든 보류중인 이벤트를 처리하고, 이벤트 콜백을 호출하고, 보류중인 지오메트리 관리를 완료합니다. 보류중인 지오메트리 관리를 완료하고 필요에 따라 위젯을 다시 그리고 모든 보류 중인 유휴 작업을 호출합니다. 이 메서드는 다음과 같은 이유로 주의해서 사용해야 합니다. 잘못된 위치에서 호출하면 정말 끔찍한 경쟁 조건을 초래할 수 있습니다. (예를 들어 이벤트 콜백 내에서 또는 함수에서) 호출될 경우 정말 끔찍한 레이스 조건을 초래할 수 있으므로 주의해서 사용해야 합니다. 이벤트 콜백 등에서 호출할 수 있는 함수 등). 에 있는 경우 의심스러우면 update_idletasks를 대신 사용하세요.
저는 메인 루프에 들어가기 전에 위젯의 크기/위치를 가져오는 등의 작업을 수행하는 방법을 알아내려고 애쓰는 동안 이 방법을 많이 사용했습니다.
이 질문은 늙은,하지만 여기는's 는 또 다른 방법:
root = Tk()
root.minsize(foo, bar)
루트입니다.minsize()트 windows's 의 최소 크기foo과바어디foo과바는 너비 및 높이 창의 각각합니다.
귀하의해야합니다,그러나 이 코드를 실행하기 전에 mainloop 실행을 완료. 그것은 단지 적용한 후 명령이 호출됩니다.
root = Tk()
루트 창이 생성되었으므로. 루트 창은 프로그램에서 기본 애플리케이션 창입니다. 제목 표시줄과 테두리가 있습니다. 이는 창 관리자가 제공합니다. 다른 위젯보다 먼저 만들어야 합니다.
root.geometry("250x150+300+300")
지오메트리()** 메서드는 창의 크기를 설정하고 화면에 위치를 지정합니다. 처음 두 매개변수는 창의 너비와 높이입니다. 마지막 두 매개변수는 x, y 화면 좌표입니다.
app = Example(root)
여기서는 애플리케이션 클래스의 인스턴스를 생성합니다.
root.mainloop()
마지막으로 메인루프에 들어갑니다. 이 시점부터 이벤트 처리가 시작됩니다. 메인 루프는 창 시스템에서 이벤트를 받아 애플리케이션 위젯으로 전송합니다. 제목 표시줄의 닫기 버튼을 클릭하거나 quit() 메서드를 호출하면 종료됩니다.
도움이 되셨기를 바랍니다.