일부 텍스트 줄을 표시하기 위해 (Frame
에 Label
통해) 위젯을 작성 중이며 문자 높이가 포함 높이 인 Frame
보다 큰 경우 글꼴 크기를 조정해야합니다. 이 맞을 때까지 (더 좋은 아이디어가, 루프 -프레임의 자연 높이가 즉시 업데이트되지 않는 이유는 무엇입니까?
그렇게하기 위해, 나는 그것을 줄이고 텍스트를 재 작성에 아이디어, 업데이트 된 Label
텍스트 후 Frame
에 대한 .winfo_reqheight()
를 조회하고 따뜻하게 환영)
어쨌든,이 기능을 구현하기위한 테스트 스크립트를 작성했지만 Frame
에 대한 높이는 Label
(텍스트를 업데이트 한 후)과 비교하여 일회용입니다. 실용적인 관점에서
다음 Frame
의 크기가 하나의 방법 코드
import Tkinter as tk
class App():
def __init__(self):
self.root = tk.Tk()
self.root.geometry("200x200")
self.f = tk.Frame(self.root)
self.f.pack(expand=True, fill=tk.BOTH)
self.l = tk.Label(self.f)
self.l.pack(expand=True, fill=tk.BOTH)
self.root.bind("q", func=self.addline)
self.counter = 0
def addline(self, event):
mylist = list()
self.counter += 1
for _ in range(self.counter):
mylist.append("hello")
message = '\n'.join(mylist)
self.l.configure(text=message, font=('Arial', 30))
print("frame: {0} label {1}".format(self.f.winfo_reqheight(), self.l.winfo_reqheight()))
App().root.mainloop()
후 3 프레스 q
의 표시
출력한다
frame: 21 label 51
frame: 51 label 96
frame: 96 label 141
알 떨어져서? 두 위젯이 동시에 쿼리되는데도이 동작의 이유는 무엇입니까?
@PadraicCunningham, 수정 해 주셔서 감사합니다. :) – falsetru
걱정 마세요, 당신은 환영합니다 :) –