클래스를 사용하여 tkinter로 여러 개의 유사한 프레임을 만드는 방법은 무엇입니까?

숀 반 에든

Tkinter에서 동일한 위젯을 가진 여러 프레임을 어떻게 만들 수 있습니까? 기본적으로 내가 원하는 것은 이미지에 표시된 것과 동일한 위젯을 모두 포함하는 여러 프레임 세트의 사본 15 개를 만드는 것입니다.이 프로그램의 목적은 사용자가 제공 한 특정 ID를 기반으로 사진을 그룹으로 분류하는 데 도움을주는 것입니다. 사용자. 라디오 버튼은 사용자가 각 사진 (예 : 앞, 뒤, 위 등)을 분류 할 수 있도록합니다.

코드를 15 번 복사하는 것은 그다지 효율적이지 않으며 클래스를 사용하여 프레임을 한 번 정의하고 각 새 프레임에 대해 코드를 재사용 할 수 있는지 알고 싶습니다. 사용자가 각 프레임에서 수행하는 작업을 추적하고 각 프레임의 라디오 버튼과 확인란에 선택 사항을 저장해야합니다. 사용자가 모든 사진을 분류 한 후 버튼을 클릭하면 모든 사진이 새 ID로 저장되고 라디오 버튼의 정보도 csv 파일에 저장됩니다. 그런 다음 다음 사진 배치가로드되고 프로세스가 반복됩니다.

프레임 중 하나를 만드는 데 사용한 코드의 예를 포함했습니다. 이것은 재사용 가능하게 만들고 싶은 코드입니다. 15 번 반복하고 싶지 않아요.

  ############################################################################
#FRAME 3
Photo_2 = Frame(master, bg = "white",relief = RIDGE, bd = 2)
Photo_2.grid(column = 2, row = 1, padx=5, pady=5)
Lbl2 = Label(Photo_2,text = 'Frame 3')
Lbl2.grid(row = 0, column = 0, columnspan = 4, pady = 5)

# Check box
varc2 = StringVar()
varc2.set(0)
Check_2 = Checkbutton(Photo_2, variable = varc2, text="Relevant?", command = lambda:Chk_Val(varc2))
Check_2.grid(row = 1,column = 0,columnspan = 4)

# Photo 1
P2 = "Photo_2.jpg"
P2 = Image.open(P2).resize((200, 200), Image.ANTIALIAS)
phot2 = ImageTk.PhotoImage(P2)
panel = Label(Photo_2, image = phot2)
panel.grid(columnspan = 3, column=1)

# Create Multiple Radio Buttons
Rad_Cont = Frame(Photo_2)
Rad_Cont.grid(column = 0, row = 2)

v2 = StringVar()
v2.set("Address")

for text,mode in RADIO:
    b = Radiobutton(Rad_Cont, text=text, variable=v2,
                    value=mode, command = lambda:Rad_Val(v2))
    b.pack()

################################################################################
플링 켈밍

물론 유사한 객체를 나타내는 클래스를 생성 할 수 있습니다.

수행하려는 작업을 구현하는 방법은 다음과 같습니다.

import tkinter as tk

class PhotoFrame(tk.Frame):

    def __init__(self, master):

        tk.Frame.__init__(self, master, bg='white', relief='ridge', bd=2)

        self.label_widget()
        self.checkbox_widget()
        self.photo_widget()
        self.radio_widgets()


    def label_widget(self):
        self.title_label = tk.Frame(self, text='Frame 3')  # Or Frame 1, 2 etc.
        self.title_label.grid(row=0, column=0, columnspan=4, pady=5)


    def checkbox_widget(self):
        self.varc = tk.StringVar()
        self.varc.set(0)

        self.checkbox = tk.Checkbutton(self, variable=self.varc,
                                       text='Relevant?', command=self.Chk_Val)
        self.checkbox.grid(row=1, column=0, columnspan=4)


    def photo_widget(self):
        # ... Your code here


    def radio_widgets(self):
        # ... Your code here


    def Chk_Val(self):
        # ... Your code here

이제는 전체 솔루션을 제공하지 않기 때문에 나머지는 스스로 배우고 알아낼 수 있지만 수업을 사용하는 측면에서 내가 무엇을 얻고 있는지 알 수있을 것입니다. 이제이 클래스 PhotoFrame는 원하는만큼 여러 번 사용할 수 있지만 각 프레임을 적절하게 구성해야합니다. 예를 들어 label_widget섹션 에서 텍스트 속성 할당을 생략합니다 (모든 프레임을 원하지는 않습니다). 제목이 'Frame 3')이므로 기본 프로그램 논리에서 다음 PhotoFrame과 같이 개체 의 각 인스턴스를 구성합니다 .

frame1 = PhotoFrame(master)
frame1.title_label.configure(text='Frame 1')  # Along with any other configuration

이 모든 것이 도움이되기를 바랍니다. 클래스에 익숙하지 않은 경우 제공된 문서를 확인하고 여기에 훌륭한 tkinter 참조가 있습니다. NMT tkinter

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Terraform을 사용하여 azure에 대한 목록 / 개수를 사용하여 고유하고 동일하지 않은 이름으로 동일한 유형의 여러 리소스를 만드는 방법은 무엇입니까?

분류에서Dev

클래스를 사용하여 tkinter GUI와 프로그램을 연결하는 방법은 무엇입니까?

분류에서Dev

래스터 개체의 값을 사용하여 레이어를 만드는 방법은 무엇입니까?

분류에서Dev

유형을 사용하여 런타임에서 내부 클래스로 클래스를 정의하는 방법은 무엇입니까?

분류에서Dev

C # winforms를 사용하여 여러 스타일로 레이블을 만드는 방법은 무엇입니까?

분류에서Dev

Multiindex를 사용하여 Pandas 데이터 프레임의 단일 행을 여러 행으로 합산하는 방법은 무엇입니까?

분류에서Dev

SKnode를 하위 클래스로 분류하여 여러 개의 독립적 인 '레인'이있는 장면을 만드는 방법은 무엇입니까?

분류에서Dev

날짜 범위를 열의 값으로 사용하여 데이터 프레임을 만드는 방법은 무엇입니까?

분류에서Dev

속성 파일을 사용하여 하나의 로거에 동일한 유형의 여러 어 펜더를 사용하는 방법은 무엇입니까?

분류에서Dev

__new__를 사용하여 다른 클래스의 인스턴스를 기반으로 클래스를 만드는 방법은 무엇입니까?

분류에서Dev

C # 제네릭을 사용하여 클래스의 개체를 T 형식의 개체로 변환하는 방법은 무엇입니까?

분류에서Dev

파이썬을 사용하여 열 값으로 -9999를 사용하여 데이터 프레임의 행을 제거하는 방법은 무엇입니까?

분류에서Dev

데이터 프레임의 다른 열을 사용하여 하나의 플롯에 여러 그래프를 그리는 방법은 무엇입니까?

분류에서Dev

상속을 사용하여 수퍼 클래스의 속성을 하위 클래스로 만드는 방법은 무엇입니까?

분류에서Dev

Ruby의 여러 클래스에서 사용자 입력을 사용하는 방법은 무엇입니까?

분류에서Dev

tkinter를 사용하여 스크롤 가능한 프레임 내에 수평 프레임을 저장하고 추가하는 방법은 무엇입니까?

분류에서Dev

Pandas를 사용하여 열의 하위 집합만으로 사전을 데이터 프레임으로 바꾸는 방법은 무엇입니까?

분류에서Dev

사용자 정의 기능을 사용하여 여러 HTML 테이블을 Pandas 데이터 프레임으로 변환하는 방법은 무엇입니까?

분류에서Dev

Angular를 사용하여 배열의 각 개체에 고유 한 클래스 이름을 추가하는 방법은 무엇입니까?

분류에서Dev

typescript를 사용하여 vue prop 유형을 사용자 클래스의 배열로 설정하는 방법은 무엇입니까?

분류에서Dev

저지에서 MediaType 클래스를 사용하여 사용자 정의 MIME 유형을 만드는 방법은 무엇입니까?

분류에서Dev

xib를 사용하여 여러 화면으로 앱을 개발하는 방법은 무엇입니까?

분류에서Dev

Guice 모듈을 사용하여 클래스의 여러 필드 중 하나를 인스턴스화하는 방법은 무엇입니까?

분류에서Dev

Guice 모듈을 사용하여 클래스의 여러 필드 중 하나를 인스턴스화하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 여러 인덱스를 사용하여 데이터 프레임에 대한 누적 플롯을 만드는 방법은 무엇입니까?

분류에서Dev

클래스를 사용하여 tkinter 캔버스에 다각형을 그리는 방법은 무엇입니까?

분류에서Dev

for 루프를 사용하여 여러 개의 주사위를 굴리는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 div의 여러 클래스에서 지정된 클래스 이름을 얻는 방법은 무엇입니까?

분류에서Dev

linq C #으로 엔티티 프레임 워크를 사용하여 두 개의 테이블 결합 레코드를 얻는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Terraform을 사용하여 azure에 대한 목록 / 개수를 사용하여 고유하고 동일하지 않은 이름으로 동일한 유형의 여러 리소스를 만드는 방법은 무엇입니까?

  2. 2

    클래스를 사용하여 tkinter GUI와 프로그램을 연결하는 방법은 무엇입니까?

  3. 3

    래스터 개체의 값을 사용하여 레이어를 만드는 방법은 무엇입니까?

  4. 4

    유형을 사용하여 런타임에서 내부 클래스로 클래스를 정의하는 방법은 무엇입니까?

  5. 5

    C # winforms를 사용하여 여러 스타일로 레이블을 만드는 방법은 무엇입니까?

  6. 6

    Multiindex를 사용하여 Pandas 데이터 프레임의 단일 행을 여러 행으로 합산하는 방법은 무엇입니까?

  7. 7

    SKnode를 하위 클래스로 분류하여 여러 개의 독립적 인 '레인'이있는 장면을 만드는 방법은 무엇입니까?

  8. 8

    날짜 범위를 열의 값으로 사용하여 데이터 프레임을 만드는 방법은 무엇입니까?

  9. 9

    속성 파일을 사용하여 하나의 로거에 동일한 유형의 여러 어 펜더를 사용하는 방법은 무엇입니까?

  10. 10

    __new__를 사용하여 다른 클래스의 인스턴스를 기반으로 클래스를 만드는 방법은 무엇입니까?

  11. 11

    C # 제네릭을 사용하여 클래스의 개체를 T 형식의 개체로 변환하는 방법은 무엇입니까?

  12. 12

    파이썬을 사용하여 열 값으로 -9999를 사용하여 데이터 프레임의 행을 제거하는 방법은 무엇입니까?

  13. 13

    데이터 프레임의 다른 열을 사용하여 하나의 플롯에 여러 그래프를 그리는 방법은 무엇입니까?

  14. 14

    상속을 사용하여 수퍼 클래스의 속성을 하위 클래스로 만드는 방법은 무엇입니까?

  15. 15

    Ruby의 여러 클래스에서 사용자 입력을 사용하는 방법은 무엇입니까?

  16. 16

    tkinter를 사용하여 스크롤 가능한 프레임 내에 수평 프레임을 저장하고 추가하는 방법은 무엇입니까?

  17. 17

    Pandas를 사용하여 열의 하위 집합만으로 사전을 데이터 프레임으로 바꾸는 방법은 무엇입니까?

  18. 18

    사용자 정의 기능을 사용하여 여러 HTML 테이블을 Pandas 데이터 프레임으로 변환하는 방법은 무엇입니까?

  19. 19

    Angular를 사용하여 배열의 각 개체에 고유 한 클래스 이름을 추가하는 방법은 무엇입니까?

  20. 20

    typescript를 사용하여 vue prop 유형을 사용자 클래스의 배열로 설정하는 방법은 무엇입니까?

  21. 21

    저지에서 MediaType 클래스를 사용하여 사용자 정의 MIME 유형을 만드는 방법은 무엇입니까?

  22. 22

    xib를 사용하여 여러 화면으로 앱을 개발하는 방법은 무엇입니까?

  23. 23

    Guice 모듈을 사용하여 클래스의 여러 필드 중 하나를 인스턴스화하는 방법은 무엇입니까?

  24. 24

    Guice 모듈을 사용하여 클래스의 여러 필드 중 하나를 인스턴스화하는 방법은 무엇입니까?

  25. 25

    파이썬에서 여러 인덱스를 사용하여 데이터 프레임에 대한 누적 플롯을 만드는 방법은 무엇입니까?

  26. 26

    클래스를 사용하여 tkinter 캔버스에 다각형을 그리는 방법은 무엇입니까?

  27. 27

    for 루프를 사용하여 여러 개의 주사위를 굴리는 방법은 무엇입니까?

  28. 28

    jquery를 사용하여 div의 여러 클래스에서 지정된 클래스 이름을 얻는 방법은 무엇입니까?

  29. 29

    linq C #으로 엔티티 프레임 워크를 사용하여 두 개의 테이블 결합 레코드를 얻는 방법은 무엇입니까?

뜨겁다태그

보관