반응형
tkinter 창을 중앙에 배치하려고합니다. 프로그래밍 방식으로 창 크기와 화면 크기를 가져 와서 형상을 설정하는 데 사용할 수 있다는 것을 알고 있지만, 창을 화면 중앙에 배치하는 더 간단한 방법이 있는지 궁금합니다.
해결 방법
Tk
인스턴스 (창)의 너비와 높이 (픽셀 단위)를 각각 반환하는 winfo_screenwidth
및 winfo_screenheight
메서드를 사용해 볼 수 있습니다. , 몇 가지 기본 수학을 사용하여 창을 중앙에 배치 할 수 있습니다.
import tkinter as tk
from PyQt4 import QtGui # or PySide
def center(toplevel):
toplevel.update_idletasks()
# Tkinter way to find the screen resolution
# screen_width = toplevel.winfo_screenwidth()
# screen_height = toplevel.winfo_screenheight()
# PyQt way to find the screen resolution
app = QtGui.QApplication([])
screen_width = app.desktop().screenGeometry().width()
screen_height = app.desktop().screenGeometry().height()
size = tuple(int(_) for _ in toplevel.geometry().split('+')[0].split('x'))
x = screen_width/2 - size[0]/2
y = screen_height/2 - size[1]/2
toplevel.geometry("+%d+%d" % (x, y))
toplevel.title("Centered!")
if __name__ == '__main__':
root = tk.Tk()
root.title("Not centered")
win = tk.Toplevel(root)
center(win)
root.mainloop()
반환 된 값이 정확한지 확인하기 위해 창의 너비와 높이를 검색하기 전에 update_idletasks
메서드를 호출하고 있습니다.
Tkinter 는 가로 또는 세로로 확장 된 모니터가 2 개 이상 있는지 확인하지 않습니다. 따라서 모든 화면의 전체 해상도를 함께 얻을 수 있고 창은 화면 중간 어딘가에 끝납니다.
반면에 PyQt 는 다중 모니터 환경도 볼 수 없지만 왼쪽 상단 모니터의 해상도 만 얻을 수 있습니다 (모니터 4 개, 위쪽 2 개, 아래쪽 2 개가 사각형을 만든다고 상상해보세요). . 따라서 화면 중앙에 창을 배치하여 작업을 수행합니다. PyQt 와 Tkinter 를 모두 사용하지 않으려면 처음부터 PyQt를 사용하는 것이 좋습니다.
참조 페이지 https://stackoverflow.com/questions/3352918
반응형
'파이썬' 카테고리의 다른 글
파이썬 Meaning of X = X[:, 1] in Python (0) | 2020.11.14 |
---|---|
파이썬 문자열 일치 (0) | 2020.11.14 |
파이썬 CSV 파일을 읽는 동안 문자열 값을 정수 값으로 변환하는 방법은 무엇입니까? (0) | 2020.11.13 |
파이썬 Django에서 현재 언어를 얻으려면 어떻게해야합니까? (0) | 2020.11.13 |
파이썬 최대 2 개의 숫자를 찾으려면 어떻게합니까? (0) | 2020.11.13 |
댓글