== 창(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옵션을 사용하지않아야 제대로 보일꺼 같은... {{{~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() == 푸시 단추 == 일반적은 버튼 {{{~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이 같으면 같은 그룹이라고 봐야하는건있지...???) 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에 설정하다. == 리스트 상자 == 수직 스크롤바를 추가시킨 리스트 상자... {{{~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을 텍스트를 표시만 해줄수 있음.. {{{~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는 현재 커서위치에 삽입 숫자는 삽입위치 지정 라인, 열 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'과 같은 값이 리턴됨. == 표준 대화 상자 == == 대화 상자(Dialog Box) == == 캔바스(Canvas) == ---- [방울뱀스터디]