Difference between revisions of "트킨터"

Jump to navigation Jump to search
4,647 bytes added ,  01:04, 8 April 2018
Line 446: Line 446:
TKinter combobox 콤보박스 위젯 https://blog.naver.com/audiendo/220792145212
TKinter combobox 콤보박스 위젯 https://blog.naver.com/audiendo/220792145212


== 버튼 클릭시 새 창 띄우기 ==
from tkinter import *
def nwindow():
    global nwin
    nwin = Toplevel()
    nwin.title("새 성노예")
    btn.config(state = 'disable')
    photo2 = PhotoImage(file = '/home/raper/사진/왕가슴 베이글녀.gif')
    lbl2 = Label(nwin, image = photo2)
    lbl2.pack()
    qbtn = Button(nwin, text = '맛을 봤으니 넌 사형', command = quit)
    qbtn.pack()
    nwin.mainloop()
def quit():
    nwin.destroy()
    btn.config(state = 'normal')
main = Tk()
main.title("옛 성노예")
main.geometry("750x650")
photo = PhotoImage(file = '/home/raper/사진/로린이.gif')
lbl = Label(main, image = photo)
lbl.pack()
btn = Button(main, text = "새로운 노예를 사러 가자", command = nwindow)
btn.pack()
main.mainloop()
from tkinter import *로 Tkinter 패키지를 불러온다.
def nwindow():로 nwindow 함수를 정의한다. () 안에 함수로 입력될 인자를 ,로 구분해서 여러개 적어줄 수 있다. def __init__(self, master):와 같은 식으로 맨 앞에 self를 적어준다. _가 2개 연속 있는 경우는 특별한 의미가 있는 것이다. __init__은 초기화하라는 것이다. 입력값이 없는데 입력값이 없으면 오류가 나는 경우 () 안에 self를 적어준다.
함수 안에 있는 pack()이나 변수 앞에 self가 붙어 self.pack()같은 형태인 경우 그 함수에서 쓰는 변수라는 뜻이다.
nwindow 함수로 새 창을 띄운다. nwin을 전역 변수(global variable)로 설정하여 다른 함수에서도 사용할 수 있게 한다. global을 선언하지 않으면 같은 클래스(class) 안에 있더라도 다른 함수(def)에 있으면 사용 못 하는 지역 변수(local variable)이다.
다른 클래스에 있는 함수는 다른 클래스의 이름이 classname이고 함수의 이름이 defname일 경우 classname.defname을 하면 사용할 수 있다.
class MyFrame(Frame):와 같은 경우 MyFrame 클래스가 Frame 클래스를 [[상속]]했다는 의미이며 부모의 함수를 상속받았으므로 부모 클래스인 Frame의 함수를 마음대로 가져다가 쓸 수 있다. 그러나 부모인 Frame은 자식 클래스인 MyFrame의 함수를 가져다가 쓸 수 없다.
nwin = Toplevel()을 해서 새 창으로 띄운다. nwin = Tk()를 해도 새 창으로 뜨지만 빈 창만 뜬다.
nwin.title("새 성노예")에 창의 맨 위에 뜨는 창의 제목을 적어준다.
btn.config(state = 'disable')를 해주면 새 창을 닫지 않는 이상 새 창을 띄우는 버튼이 불활성화 되어 다시 클릭할 수 없다. 다시 클릭하려면 새 창을 닫아야 한다. 이 config를 해주지 않으면 새 창을 계속 띄울 수 있다.
[[리눅스]]의 경우 자신의 사용자 계정 이름이 raper일 경우 photo2 = PhotoImage(file = '/home/raper/사진/왕가슴 베이글녀.gif')와 같이 적어주면 된다. [[윈도우즈]]의 경우 photo2 = PhotoImage(file = 'D:\사진\왕가슴 베이글녀.gif')와 같이 적어주면 된다. 이미지 파일이 이 파이썬 프로그램과 같은 폴더에 있을 경우 photo2 = PhotoImage(file = '왕가슴 베이글녀.gif')만 적어줘도 된다.
/는 [[슬래시]]([[slash]]) 또는 [[빗금]](solidus)이라고 부르며 [[유닉스]]나 [[리눅스]]에서 [[디렉터리]]를 구분할 때 사용한다. \는 [[역슬래시]]([[backslash]]) 또는 [[역사선]]([[reverse solidus]])이라고 불리며 [[윈도우즈]]에서 [[디렉터리]]를 구분할 때 사용한다. 한국어 윈도우즈에서는 역슬래시 대신 원화 기호 ₩를 사용한다. 대부분의 남한 키보드에는 역슬래시 대신에 원화 기호가 인쇄되어 있다.
qbtn = Button(nwin, text = '맛을 봤으니 넌 사형', command = quit)에 새 창의 닫기 버튼에 들어갈 말을 적어주면 된다.
btn.config(state = 'normal')이면 새 창을 닫으면 원래 있던 창의 새 창 띄우는 버튼이 다시 활성화되지만 이게 btn.config(state = 'disable')와 같으면 새 창을 닫아도 새 창을 띄우는 버튼이 불활성화된 상태 그대로 남는다.
main.geometry("750x650")면 가로 750, 세로 650 크기의 창이 열린다. main.geometry("750x650+350+200")이면 모니터의 왼쪽으로부터 350, 위로부터 200 떨어진 위치에 창이 열리고, main.geometry("750x650-130-180")이면 모니터의 오른쪽에서 130, 아래에서 180 떨어진 위치에 창이 열린다.
(Tkinter) Image won't show up in new window https://stackoverflow.com/questions/35924690/tkinter-image-wont-show-up-in-new-window


== 프레임 여러개 만들기 ==
== 프레임 여러개 만들기 ==
234

edits

Navigation menu