창(Window) 만드는법 ¶
~cpp from Tkinter import * root = Tk() root.mainloop()
프레임 만드는법 ¶
창에 프레임을 만든후에 GUI객체들을 넣어준다.(그냥 root에 해도 된다.)
프레임은 창에 영역을 나누어 준다고 보면된다.
프레임은 창에 영역을 나누어 준다고 보면된다.
~cpp frame = Frame(root) frame.pack()
GUI객체들을 만들어 준후에 pack을 해주어야 보이게 된다.
Packer 동작원리 ¶
pack()속에 여러가지 옵션을 설정해 줄수있다.
side=LEFT # 정렬방식(RIGHT, TOP, BOTTOM)
after=button1 # 현재 pack하려는 객체를 button1바로뒤에 만들어 준다.
before=button1 # 현재 pack하려는 객체를 button1바로앞에 만들어 준다.
fill=X # 객체를 창의 X축크기에 맞추어서 만들어준다. Y축으로도 가능
padx=5, pady=5 # 각 객체들 사이의 간격을 설정한다.
ipadx=5, ipady=5 # 객체내부의 간격을 설정한다.
anchor=NW # 객체위치를 북서쪽으로 설정. fill옵션을 사용하지않아야 제대로 보일꺼 같은...
after=button1 # 현재 pack하려는 객체를 button1바로뒤에 만들어 준다.
before=button1 # 현재 pack하려는 객체를 button1바로앞에 만들어 준다.
fill=X # 객체를 창의 X축크기에 맞추어서 만들어준다. Y축으로도 가능
padx=5, pady=5 # 각 객체들 사이의 간격을 설정한다.
ipadx=5, ipady=5 # 객체내부의 간격을 설정한다.
anchor=NW # 객체위치를 북서쪽으로 설정. fill옵션을 사용하지않아야 제대로 보일꺼 같은...
~cpp button.pack(side=LEFT, fill=X, padx=5, pady=10)버튼을 왼쪽정렬에 창의 X축만큼의 크기로 여백은 가로5, 세로10으로 만들어줘라....
~cpp button.place(30, 30, width=70, height=25)
위치 및 크기를 임의로 지정
데이터 입력창 ¶
데이터를 입력하는 하얀박스..
~cpp entry = Entry(frame) entry.insert(0, '') # 처음부분에 공백 문자열을 추가 entry.pack(pady=5)
Label ¶
문자를 표시해줄수 있는 객체(영역)...
textWrite = Label(frame, text="Hello World!")
textWrite.pack()
textWrite.pack()
푸시 단추 ¶
일반적은 버튼
~cpp button = Button(frame, text="Push Button", fg="red", command=frame.quit) button.pack(side=LEFT)
pack할때 정렬 방식을 정해줄수있다. 여백지정도 가능..
체크 단추 ¶
작은 하얀박스모양이고 체크하면 v표시가 된다.
~cpp var = IntVar() # 0을 초기값으로 하는 정수 변수 ()속에 숫자를 넣어주면 그값으로 초기화됨. check = Checkbutton(frame, text="Check Button", variable=var, command=cb) check.pack() def cb(): if var.get() == 1: w.configure(text='Variable is Set') elif: w.configure(text='Variable is Reset')
command는 단추를 눌렀을때 수행하는 함수를 지정한다.
라디오 단추 ¶
동그란 모양인데 선택하면 까만점(?)이 표시된다.
각 그룹에서 한개만 선택할수 있다.
각 그룹에서 한개만 선택할수 있다.
~cpp var = IntVar() radio1 = Radiobutton(frame, text="One", variable=var, value=1) radio2 = Radiobutton(frame, text="Two", variable=var, value=2) radio1.pack(anchor=w) radio2.pack(anchor=w)
같은 그룹내에 있는 라디오 단추들은 같은 variable을 공유해야한다.
(역으로 varivable이 같으면 같은 그룹이라고 봐야하는건있지...???)
(역으로 varivable이 같으면 같은 그룹이라고 봐야하는건있지...???)
radio1단추를 선택하면 var변수의 값은 1이되고, radio2단추를 선택하면 var변수의 값이 2가된다.
Radiobutton 함수호출에서 indicatoron=0을 넣어주면 라디오버튼모양이 푸시버튼모양으로 된다.
메뉴 ¶
스크롤 바 ¶
스크롤바는 대부분 리스트박스, 캔버스(Canvas)등과 함께 사용된다.
~cpp scrollbar = Scrollbar(frame) scrollbar.pack(side=RIGHT, fill=Y)
수직(수평)스크롤바를 위젯에 연결하기 위해서 2가지 일을 해야한다.
1. 위젯(객체)의 yscrollcommand 콜백 함수를 스크롤바 set 메쏘드에 설정한다.
2. 스크롤바의 command를 위젯의 yview에 설정하다.
1. 위젯(객체)의 yscrollcommand 콜백 함수를 스크롤바 set 메쏘드에 설정한다.
2. 스크롤바의 command를 위젯의 yview에 설정하다.
리스트 상자 ¶
수직 스크롤바를 추가시킨 리스트 상자...
~cpp listbox = Listbox(frame, yscrollcommand=scrollbar.set) # 1번 작업 listbox.pack(side=LEFT, fill=BOTH) scrollbar.config(command=listbox.yview) # 2번 작업수평 스크롤바사용시에는 yscrollcommand대신 xscrollcommand, yview대신 xview를 사용..
텍스트 에디터 ¶
다양한 텍스트 문서를 표시해줄수 잇다. 다양한 폰트나 이미지등도 가능함. 또 수정도 할수있다.
※Label을 텍스트를 표시만 해줄수 있음..
※Label을 텍스트를 표시만 해줄수 있음..
~cpp textArea = Text(frame, width=80, height=20) textArea.pack()
텍스트 삽입 방법 ¶
~cpp textArea.insert(END, "Hello") textArea.insert(INSERT, "world") textArea.insert(1.0, "!!!!!") # 버튼을 텍스트 에디터에 추가하는 방법 button = Button(textArea, text="Click") textArea.window_create(INSERT, window=button)
END문 문서의 마지막에 삽입
INSERT는 현재 커서위치에 삽입
숫자는 삽입위치 지정 라인, 열
INSERT는 현재 커서위치에 삽입
숫자는 삽입위치 지정 라인, 열
window_create대신에 image_create를 이용하여 단추를 문서 안에 추가시킬수도 있음.
텍스트 삭제 방법 ¶
~cpp textArea.deletet(1.0, END) # 텍스트 전체 삭제 textArea.deletet(INSERT) # 현재 문자 삭제 textArea.deletet(button) # 단추 삭제
텍스트 읽기 ¶
~cpp contents = text.get(1.0, END)
전체 문서를 가져다가 contents 변수에 저장한다.
~cpp textArea.config(state=DISABLED)
텍스트를 읽기전용으로 만듬.(state=NORMAL로 해주면 수정가능)
커서위치 알아내기 ¶
~cpp index = textArea.index(INSERT)
index에 '1.17'과 같은 값이 리턴됨.