tkinter로 만든 Label의 우단의 좌표【Python】

6057 단어 Tkinter파이썬
tkinter로 만든 Label의 우단의 좌표를 알고 싶다.
Frame,Label의 배치 방법 등 기초적인 부분은 【tkinter】Label을 사용해 본다 등을 참조해 주세요.
(본 기사는 tkinter로 Label을 이동 [Python]의 일부입니다. 검색하기 쉽도록 다른 기사로 나누어 보았습니다.)

문제


txt=Labeltext
label=ttk.Label(master=root,text=txt,font=("メイリオ",fontsize))
label.place(x=xx,y=yy)
그렇다면 label의 왼쪽 끝은 Mochimon xx입니다.
그럼, 그 Label의 표시 위에서의 우단의 좌표는?

대답

label.winfo_reqwidth()+xx

해설(오마케)


나는 처음으로 len(txt)*fontsize ( fontsize 단위는 화소px)에 갈 수 있었다고 생각했다. 그러나, tkinter로 Label을 이동 [Python] 에서 소개한 오른쪽 끝에 오면 접히는 프로그램에서, 문자열에 따라서는 Label이 오른쪽 끝에 가기 전에 접혀 버렸다.

이것은, len(txt) 로 하고 있는 것에 기인한다. 이 구현의 경우,
iiiii
AAAAA
가 같은 길이 취급되어 버리기 때문이다.
거기서 등장하는 것이__winfo_reqwidth()__이다.
htps : // 엣 f보 t. rg / t Kinne r Boo k / uded t. htm에 따르면,

Returns the “natural” width for this widget. The natural size is the minimal size needed to display the widget's contents, including padding, borders, etc. This size is calculated by the widget itself, based on the given options. The actual widget is then determined by the widget's geometry manager, based on this value, the size of the widget's master, and the options given to the geometry manager.

요컨대, 지정된 오브젝트(여기에서는 Label)를 Frame상에 표시하는데 최소한 필요한 사이즈를 돌려준다. 이것에 label 의 좌단의 좌표 xx를 더하면, 현재의 label 의 우단의 좌표를 취득할 수 있다.

잘 오른쪽 끝 판정을 할 수 있었다.

참고로 `winfo_reqheight()`로 높이를 얻을 수 있다. 즉,

label=ttk.Label(master=root,text=txt,font=("メイリオ",fontsize),foreground="red",background="green")
print(label.winfo_reqwidth())
>>125
print(label.winfo_reqheight())
>>45
txt="Labeltext\nLabeltext"#二行に渡って表示する場合
label=ttk.Label(master=root,text=txt,font=("メイリオ",fontsize),foreground="red",background="green")
print(label.winfo_reqwidth())
>>125#横幅は変わらない
print(label.winfo_reqheight())
>>86#2行になったので増えた。ただし、≠45*2である点に注意

좋은 웹페이지 즐겨찾기