편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.11.21

    파이썬 tkinter 스크롤바 질문입니다.


    외국분 유튜브를 보고 창 전체 오른쪽에 스크롤을 배치할 수 있었는데요, 제가 대학교 면접에 가서 어떻게 답변해야 할 지 모르겠어서요. 왜 스크롤바를 생성할 때 프레임을 만들어내는지? 갑자기 캔버스가 왜 등장하는지 궁금해요. 그냥 win창에 바로 생성하지 않는지! 밑에 코드보고 설명해주실 분 있나요?

    win = Tk() #Tk클래스의 win이라는 객체 만들기 - 뿌리가 되는 윈도우를 염
    
    win.title("나의 마음을 알아보세요")# 창의 이름 설정하기
    win.geometry("1145x900")# 창의 크기 설정하기
    win.option_add("*Font","Arial 20")# 폰트 설정하기
    win.configure(bg='Light Coral')# 창의 색 설정하기
    
    main_frame = Frame(win) #윈도우 위에 frame 객체 생성 
    main_frame.pack(fill=BOTH, expand=1) # 메인 프레임의 크기를 전체로 확장하기
    
    my_canvas =Canvas(main_frame) #캔버스는 그래픽요소를 출력한다 이를 이용해 메인 프레임 띄우기
    my_canvas.pack(side=LEFT, fill=BOTH, expand=1) # 크기 조절하기
    
    my_scrollbar = ttk.Scrollbar(main_frame, orient=VERTICAL, command=my_canvas.yview) #메인 프레임에 y방향으로 스크롤바 만들기 
    my_scrollbar.pack(side=RIGHT, fill=Y)# 우측으로 스크롤바의 위치를 지정하고, y축으로 모두 채우기
    
    my_canvas.configure(yscrollcommand=my_scrollbar.set) #y방향의 스크롤바에 스크롤바의 기능을 명령하기
    my_canvas.bind('<Configure>', lambda e: my_canvas.configure(scrollregion = my_canvas.bbox("all"))) #람다를 사용하여 캔버스 전체를 스크롤하는 함수를 한 줄로 지정하기 
    
    second_frame = Frame(my_canvas) # 캔버스 내부에 두번째 프레임 생성하기
    second_frame.configure(bg='yellow')
    second_frame.option_add("*Font","Arial 20")#폰트 설정하기
    
    my_canvas.create_window((0,0), window=second_frame, anchor="nw")
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.11.21

    파이썬 tkinter 스크롤바 질문입니다.


    외국분 유튜브를 보고 창 전체 오른쪽에 스크롤을 배치할 수 있었는데요, 제가 대학교 면접에 가서 어떻게 답변해야 할 지 모르겠어서요.. 왜 스크롤바를 생성할 때 프레임을 만들어내는지?, 갑자기 캔버스가 왜 등장하는지 궁금해요 그냥 win창에 바로 생성하지 않는지! 밑에 코드보고 설명해주실 분 있나요ㅠ?

    win = Tk() #Tk클래스의 win이라는 객체 만들기 - 뿌리가 되는 윈도우를 염

    win.title("나의 마음을 알아보세요")# 창의 이름 설정하기 win.geometry("1145x900")# 창의 크기 설정하기 win.option_add("*Font","Arial 20")# 폰트 설정하기 win.configure(bg='Light Coral')# 창의 색 설정하기

    main_frame = Frame(win) #윈도우 위에 frame 객체 생성 main_frame.pack(fill=BOTH, expand=1) # 메인 프레임의 크기를 전체로 확장하기

    my_canvas =Canvas(main_frame) #캔버스는 그래픽요소를 출력한다 이를 이용해 메인 프레임 띄우기 my_canvas.pack(side=LEFT, fill=BOTH, expand=1) # 크기 조절하기

    my_scrollbar = ttk.Scrollbar(main_frame, orient=VERTICAL, command=my_canvas.yview) #메인 프레임에 y방향으로 스크롤바 만들기 my_scrollbar.pack(side=RIGHT, fill=Y)# 우측으로 스크롤바의 위치를 지정하고, y축으로 모두 채우기

    my_canvas.configure(yscrollcommand=my_scrollbar.set) #y방향의 스크롤바에 스크롤바의 기능을 명령하기 my_canvas.bind('', lambda e: my_canvas.configure(scrollregion = my_canvas.bbox("all"))) #람다를 사용하여 캔버스 전체를 스크롤하는 함수를 한 줄로 지정하기

    second_frame = Frame(my_canvas) # 캔버스 내부에 두번째 프레임 생성하기 second_frame.configure(bg='yellow') second_frame.option_add("*Font","Arial 20")#폰트 설정하기

    my_canvas.create_window((0,0), window=second_frame, anchor="nw")