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 |