tkinter python의 프레임 크기와 동일한 캔버스 크기 조정

아드 난 아크람

이 첨부 된 코드와 관련된 두 가지 질문이 있습니다. 이 코드는 50 명 (또는 그 이상) 학생의 출석을 관리해야하는 프로젝트의 일부입니다.

  1. 이 코드 조각을 실행하면 레이블 프레임 (예 : Attendance_Frame) 내에 추가 공백 (캔버스 일 수 있음)이 있음을 알 수 있습니다. 내가 원했던 것은 여분의 공백이 없어야하고 스크롤바가 맨 오른쪽에있는 대신 레이블이 끝나는 위치에 있어야한다는 것입니다. 나는 내 질문에 대한 답을 찾고 비슷한 사례를 보았습니다. 그러나 그곳에서 그 사람은 프레임이 캔버스 크기로 확장되기를 원했습니다. 링크 ( Tkinter : 캔버스 창에서 프레임을 가져와 캔버스 크기로 확장하는 방법은 무엇입니까? ). 그러나 제 경우에는 캔버스 크기가 프레임 크기와 같기를 원합니다 (프레임이 캔버스 안에 있지만)

  2. 내가 원하는 또 다른 것은 모든 확인란이 처음에 '선택'되어야한다는 것 (현재 상태 표시)과 무작위 확인란의 선택을 취소 할 때 (결석을 표시하기 위해), '제출'버튼을 클릭합니다 (아직 창 하단), 첫 번째 요소로 '입력 한 날짜'가있는 목록과 다른 요소로 2018-MC-XX와 같은 롤 번호가 포함 된 목록이 표시됩니다. 예 : ['01 / 08 / 2020 ','2018-MC-7 ','2018-MC-11 ','2018-MC-23 ','2018-MC-44 ']. 실제로 내 계획은 내가 목록을 얻을 때 내가 쉽게 텍스트 파일에 쓸 것입니다.

     from tkinter import *
     from tkcalendar import DateEntry
    
     root = Tk()
     root.geometry('920x600+270+50')
     root.minsize(920,600)
    
     Attendance_frame = Frame(root)    ### Consider it a Main Frame
     Attendance_frame.pack()
    
     attendaceBox = LabelFrame(Attendance_frame, text = 'Take Attendance', bd = 4, relief = GROOVE, labelanchor = 'n',font = 'Arial 10 bold', fg = 'navy blue', width = 850, height = 525)     # A Label Frame inside the main frame
    
     attendaceBox.pack_propagate(0)
     attendaceBox.pack(pady = 15)
    
     dateFrame = Frame(attendaceBox)    # A small frame to accommodate date entry label & entry box
     dateFrame.pack(anchor = 'w')
    
     font = 'TkDefaultFont 10 bold'
     date_label = Label(dateFrame, text = 'Enter Date : ', font = font).grid(row = 0, column =  0, sticky = 'w', padx = 10, pady = 10)
    
     date_entry = DateEntry(dateFrame, date_pattern = 'dd/mm/yyyy', showweeknumbers = FALSE, showothermonthdays = FALSE)
     date_entry.grid(row = 0, column = 1, sticky = 'w')
    
     noteLabel = Label(attendaceBox, text = 'Note: Uncheck the boxes for absentees').pack(anchor = 'w', padx = 10, pady = 5)
    
     canvas = Canvas(attendaceBox, borderwidth=0, background="#ffffff")
     checkFrame = Frame(canvas, width = 100, height = 50)
     vsb = Scrollbar(canvas, orient="vertical", command=canvas.yview)
     canvas.configure(yscrollcommand=vsb.set)
    
     vsb.pack(side="right", fill="y")
     canvas.pack(side="left", fill="both", expand=True)
     canvas.pack_propagate(0)
     canvas.create_window((4,4), window=checkFrame, anchor="nw")
    
     def onFrameConfigure(canvas):
         '''Reset the scroll region to encompass the inner frame'''
         canvas.configure(scrollregion=canvas.bbox("all"))
    
     checkFrame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))
    
     for i in range(0,51):     # A loop to create Labels of students roll numbers & names
         c = Checkbutton(checkFrame, text = f"{'2018-MC-'+str(i+1)}       Student {i+1}")
         c.grid(row = i, column = 0, padx = 10, sticky = 'w')
    
    
     mainloop()
    
브라이언 오클리

항목의 세로 목록을 만드는 경우 캔버스 내부에 프레임을 사용할 필요가 없습니다. 내부 프레임은 불필요한 복잡성을 추가합니다. 대신 캔버스에 create_window.

scrollregion스크롤바가 스크롤 할 가상 캔버스의 양을 알 수 있도록 속성 을 구성해야합니다 .

마지막으로, 그것들을 선택하려면 각 체크 버튼에 변수를 할당하고 값이 적절한 값인지 확인해야합니다. 기본적으로 체크 버튼은 값 0과 1을 사용하므로 변수를 1로 설정하면 선택됩니다.

vars = []
for i in range(0,51):
    var = IntVar(value=1)
    vars.append(var)
    x0, y0, x1, y1 = canvas.bbox("all") or (0,0,0,0)
    c = Checkbutton(canvas, text = f"{'2018-MC-'+str(i+1)}       Student {i+1}", variable=var)
    canvas.create_window(2, y1+4, anchor="nw", window=c)
canvas.configure(scrollregion=canvas.bbox("all"))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Tkinter : 캔버스의 스크롤 가능한 프레임 : 자동 크기 조정 바인딩 오류

분류에서Dev

Tkinter 캔버스의 동적 크기 조정 사각형

분류에서Dev

python tkinter 캔버스 크기가 조정되지 않음

분류에서Dev

김프 : 캔버스 크기를 이미지 크기로 자동 크기 조정

분류에서Dev

Python Tkinter : 프레임 크기 조정 문제

분류에서Dev

<div>의 jquery 크기 조정 캔버스

분류에서Dev

Tkinter는 스크롤바와 캔버스 테두리가 겹치지 않도록 프레임 크기를 수정했습니다.

분류에서Dev

캔버스 및 콘텐츠의 동적 크기 조정

분류에서Dev

캔버스 크기 조정 스크롤 막대의 Tkinter가 조정되지 않음

분류에서Dev

tkinter 고정 캔버스 크기

분류에서Dev

Tkinter에서 캔버스 크기 조정 및 다시 그리기

분류에서Dev

Tkinter : 고정 된 크기의 프레임 중앙 레이블?

분류에서Dev

캔버스 크기 및 비트 맵 파일 크기 조정

분류에서Dev

이미지의 고정 크기와 동일한 이미지에 오버레이

분류에서Dev

UIElements를 이동, 크기 조정, 회전하는 캔버스와 그리드의 차이점

분류에서Dev

SciKit Learn에서 동일한 전처리기로 데이터 프레임의 여러 열 크기 조정

분류에서Dev

Tkinter-프레임 내의 레이블 수가 변경 될 때 스크롤바의 크기가 조정되지 않습니다.

분류에서Dev

Windows 8에서 캔버스 내부의 사각형 이동 및 크기 조정

분류에서Dev

Python tkinter 프레임 스크류 업 팩 기능에서 상속

분류에서Dev

Tkinter : 초기화 중에 실제 캔버스 크기 가져 오기 ( "sticky"에 의한 자동 확장 포함)

분류에서Dev

창 크기 조정시 캔버스 크기를 동적으로 조정

분류에서Dev

tkinter 그리드 및 프레임 크기 조정 프레임 없음

분류에서Dev

스크롤바를 사용하여 프레임의 열 크기 조정

분류에서Dev

모바일 및 데스크톱 용 프레임 크기 조정시 문제

분류에서Dev

awt 프레임에 맞게 크기 조정 가능한 스크롤 창

분류에서Dev

div와 동일한 크기의 Div 오버레이

분류에서Dev

캔버스의 프레임에서 그리드를 스크롤 할 수 없습니다 (tkinter).

분류에서Dev

크기가 조정 된 캔버스의 마우스 위치

분류에서Dev

캔버스 컨텍스트의 잘못된 크기 조정

Related 관련 기사

  1. 1

    Tkinter : 캔버스의 스크롤 가능한 프레임 : 자동 크기 조정 바인딩 오류

  2. 2

    Tkinter 캔버스의 동적 크기 조정 사각형

  3. 3

    python tkinter 캔버스 크기가 조정되지 않음

  4. 4

    김프 : 캔버스 크기를 이미지 크기로 자동 크기 조정

  5. 5

    Python Tkinter : 프레임 크기 조정 문제

  6. 6

    <div>의 jquery 크기 조정 캔버스

  7. 7

    Tkinter는 스크롤바와 캔버스 테두리가 겹치지 않도록 프레임 크기를 수정했습니다.

  8. 8

    캔버스 및 콘텐츠의 동적 크기 조정

  9. 9

    캔버스 크기 조정 스크롤 막대의 Tkinter가 조정되지 않음

  10. 10

    tkinter 고정 캔버스 크기

  11. 11

    Tkinter에서 캔버스 크기 조정 및 다시 그리기

  12. 12

    Tkinter : 고정 된 크기의 프레임 중앙 레이블?

  13. 13

    캔버스 크기 및 비트 맵 파일 크기 조정

  14. 14

    이미지의 고정 크기와 동일한 이미지에 오버레이

  15. 15

    UIElements를 이동, 크기 조정, 회전하는 캔버스와 그리드의 차이점

  16. 16

    SciKit Learn에서 동일한 전처리기로 데이터 프레임의 여러 열 크기 조정

  17. 17

    Tkinter-프레임 내의 레이블 수가 변경 될 때 스크롤바의 크기가 조정되지 않습니다.

  18. 18

    Windows 8에서 캔버스 내부의 사각형 이동 및 크기 조정

  19. 19

    Python tkinter 프레임 스크류 업 팩 기능에서 상속

  20. 20

    Tkinter : 초기화 중에 실제 캔버스 크기 가져 오기 ( "sticky"에 의한 자동 확장 포함)

  21. 21

    창 크기 조정시 캔버스 크기를 동적으로 조정

  22. 22

    tkinter 그리드 및 프레임 크기 조정 프레임 없음

  23. 23

    스크롤바를 사용하여 프레임의 열 크기 조정

  24. 24

    모바일 및 데스크톱 용 프레임 크기 조정시 문제

  25. 25

    awt 프레임에 맞게 크기 조정 가능한 스크롤 창

  26. 26

    div와 동일한 크기의 Div 오버레이

  27. 27

    캔버스의 프레임에서 그리드를 스크롤 할 수 없습니다 (tkinter).

  28. 28

    크기가 조정 된 캔버스의 마우스 위치

  29. 29

    캔버스 컨텍스트의 잘못된 크기 조정

뜨겁다태그

보관