본문 바로가기

코딩/파이썬 tkinter

[Tkinter] 13장. Entry

Look and Feel!

 

화면에서 tkinter.Entry 및 ttk.Entry는 위의 이미지와 같이 보입니다.

tkinter.Entry와 ttk.Entry는 가장자리 모양을 제외하면 일단 동일해 보이네요.

 

위 화면에 대한 코드는 아래와 같습니다.

 

  • Entry 위젯은 보통 텍스트 입력을 받기 위해 사용되기 때문에 Label처럼 text 옵션이 있는 것이 아니라 textvariable 옵션이 있습니다.
  • 파이썬과 Tcl/Tk는 원래 독립적인 프로그래밍 언어/환경이기 때문에 Tcl/Tk가 인식 가능한 데이터 타입을 사용해야 합니다. 이러한 이유로 tkinter.StringVar 클래스로 만든 객체를 Entry의 textvariable에 전달해야 합니다.
  • 마지막 Entry엔 X축 스크롤바가 연결되어 있습니다.
  • Entry에 표시되는 텍스트는 tkinter.StringVar 클래스의 get() 메서드를 이용해 얻을 수 있습니다.
import tkinter as tk
import tkinter.ttk as ttk


class MainWin(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.win_settings()
        self.tkinter_ttk_basics()

    def win_settings(self):
        self.title('tkinter / ttk')
        self.geometry('480x320+200+200')
        self.minsize(200, 200)

    # -------------------------------------------------------------------------
    def tkinter_ttk_basics(self):
        self.entry1_var = tk.StringVar(value='tk.Entry (1)')
        tk.Entry(self, textvariable=self.entry1_var).grid(padx=10, pady=10)

        self.entry2_var = tk.StringVar()
        self.entry2_var.set('ttk.Entry (2)')
        ttk.Entry(self, textvariable=self.entry2_var).grid(padx=10)

        self.entry3_var = tk.StringVar()
        self.entry3_var.set('ttk.Entry (3)')
        ttk.Entry(self, textvariable=self.entry3_var, state='readonly').grid(padx=10, pady=10)

        self.entry4_var = tk.StringVar(value='ttk.Entry (4)')
        ttk.Entry(self, textvariable=self.entry4_var, foreground='red', show='*').grid(padx=10)

        self.entry5_var = tk.StringVar(value='ttk.Entry (5)')
        ttk.Entry(self, textvariable=self.entry5_var, state=tk.DISABLED).grid(padx=10, pady=10)

        self.entry6_var = tk.StringVar()
        self.entry6_var.set('The purpose of an Entry widget is to let the user see and modify a single line of text.')
        self.entry6 = ttk.Entry(self, textvariable=self.entry6_var)
        self.entry6.grid(padx=10)
        self.scrollbar = tk.Scrollbar(self, orient=tk.HORIZONTAL)
        self.scrollbar.grid(sticky=tk.NSEW, padx=10)
        self.entry6['xscrollcommand'] = self.scrollbar.set
        self.scrollbar.config(command=self.entry6.xview)

        ttk.Label(self, text=self.entry1_var.get()).grid(row=0, column=1, padx=10)
    # -------------------------------------------------------------------------


if __name__ == '__main__':
    mainWin = MainWin()
    mainWin.mainloop()

 

'코딩 > 파이썬 tkinter' 카테고리의 다른 글

[Tkinter] 15장. Checkbutton  (0) 2020.11.15
[Tkinter] 14장. 위젯의 focus() 메서드  (0) 2020.11.15
[Tkinter] 12장. Button  (0) 2020.11.11
[Tkinter] 11장. Label (ttk) 2단계  (0) 2020.11.08
[Tkinter] 10장. Label 2단계  (0) 2020.11.08