나는 창 크기에 따라 tkinter 캔버스에있는 객체의 위치를 변경하는 프로그램을 가지고있다. 이 기능은 작동하지만 루프마다 실행되며 객체가 많은 경우 프로그램을 빠르게 삭제합니다. 삭제하고 다시 그리는 경우입니다. 이 한 번만 실행해야합니다 있도록Python Tk 창에서 변경 사항을 확인하는 방법이 있습니까?
윈도우의 크기 변화를 확인하는 방법은 될 필요가있을 때,이 있습니까?
나는 창 크기에 따라 tkinter 캔버스에있는 객체의 위치를 변경하는 프로그램을 가지고있다. 이 기능은 작동하지만 루프마다 실행되며 객체가 많은 경우 프로그램을 빠르게 삭제합니다. 삭제하고 다시 그리는 경우입니다. 이 한 번만 실행해야합니다 있도록Python Tk 창에서 변경 사항을 확인하는 방법이 있습니까?
윈도우의 크기 변화를 확인하는 방법은 될 필요가있을 때,이 있습니까?
창 크기가 변경되면 (기타 이유로) tkinter는 <Configure>
이벤트를 발생시킵니다. 이 이벤트에 바인딩하여 위젯의 크기가 변경 될 때 알림을받을 수 있습니다. 공식 문서에서
:
에 구성 이벤트가 창에 전송 될 때마다 크기, 위치, 또는 테두리 폭의 변화, 그리고 때로는 쌓인 순서에서 위치를 변경하는 경우.
참고 : 이는 루트 창뿐 아니라 모든 위젯에 해당됩니다. 예를 들어, 캔버스 위젯 또는 다른 위젯에 바인딩 할 수 있습니다.
예 :
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, width=20)
label.pack(side="top", fill="both", expand=True, padx=20, pady=20)
def handle_configure(event):
text="window geometry:\n" + root.geometry()
label.configure(text=text)
root.bind("<Configure>", handle_configure)
root.mainloop()
당신은 바인딩 된 함수 내에서 위젯의 크기를 변경하거나 위젯의 크기를 조정하면 이벤트가 트리거 될 것입니다 당신이 무한 루프에 끝낼 수 있습니다하지 않도록주의해야합니다, 위젯의 크기를 조정하여 이벤트를 트리거합니다.
사실, 픽셀 w
의 현재 높이와 폭을 얻을 w.winfo_height()
w.winfo_width()
방법을 사용할 수있다. (w
어떤 유형의 위젯 수있다.)
예를
from Tkinter import *
w=Tk()
w.geometry('400x600')
w.update()
print (w.winfo_width())
print (w.winfo_height())