티스토리 뷰

카테고리 없음

Tkinter의 레이아웃 관리

뽀로로친구에디 2018. 8. 27. 21:09

Tkinter의 레이아웃 관리


절대 위치 지정

대부분의 경우 프로그래머는 레이아웃 관리자를 사용해야합니다. 절대 위치 지정을 사용할 수있는 몇 가지 상황이 있습니다. 절대 위치 지정에서 프로그래머는 각 위젯의 위치와 크기를 픽셀 단위로 지정합니다. 창 크기를 조정하면 위젯의 크기와 위치가 변경되지 않습니다. 응용 프로그램은 다양한 플랫폼에서 다르게 보이며 Linux에서는 정상적으로 보이지만 Mac OS에서는 잘 보이지 않을 수 있습니다. 응용 프로그램에서 글꼴을 변경하면 레이아웃이 손상 될 수 있습니다. 응용 프로그램을 다른 언어로 번역하는 경우 레이아웃을 다시해야합니다.

from PIL import Image, ImageTk
from tkinter import Tk, BOTH
from tkinter.ttk import Frame, Label, Style

class Example(Frame):
  
    def __init__(self):
        super().__init__()   
         
        self.initUI()

        
    def initUI(self):
      
        self.master.title("Absolute positioning")
        self.pack(fill=BOTH, expand=1)
        
        Style().configure("TFrame", background="#333")
        
        bard = Image.open("bardejov.jpg")
        bardejov = ImageTk.PhotoImage(bard)
        label1 = Label(self, image=bardejov)
        label1.image = bardejov
        label1.place(x=20, y=20)
        
        rot = Image.open("rotunda.jpg")
        rotunda = ImageTk.PhotoImage(rot)
        label2 = Label(self, image=rotunda)
        label2.image = rotunda
        label2.place(x=40, y=160)        
        
        minc = Image.open("mincol.jpg")
        mincol = ImageTk.PhotoImage(minc)
        label3 = Label(self, image=mincol)
        label3.image = mincol
        label3.place(x=170, y=50)        
              

def main():
  
    root = Tk()
    root.geometry("300x280+300+300")
    app = Example()
    root.mainloop()  


if __name__ == '__main__':
    main()  


이 예에서는 절대 위치 지정을 사용하여 세 개의 이미지를 배치합니다. 작업 공간 관리자를 사용합니다.


from PIL import Image, ImageTk

우리는 Python Imaging Library (PIL) 모듈에서 Image와 ImageTk를 사용합니다.


style = Style()
style.configure("TFrame", background="#333") 

스타일을 사용하여 어두운 회색 배경으로 프레임을 구성합니다.


bard = Image.open("bardejov.jpg")
bardejov = ImageTk.PhotoImage(bard)

현재 작업 디렉토리의 이미지에서 이미지 객체와 사진 이미지 객체를 만듭니다.


label1 = Label(self, image=bardejov)

우리는 이미지가있는 레이블을 만듭니다. 레이블에는 텍스트 또는 이미지가 포함될 수 있습니다.


label1.image = bardejov

이미지 참조를 유지해야합니다.


label1.place(x=20, y=20)

레이블은 x = 20 및 y = 20 좌표에서 프레임에 배치됩니다.

댓글
최근에 달린 댓글
글 보관함
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Total
Today
Yesterday
    뽀로로친구에디
    최근에 올라온 글