目次
テキストボックスを作成する
テキストボックス (一行の文字列を入力することができるウィジェット) を作成するためには、
tkinter.ttk
モジュールの Entry
クラスを利用します。
Entry
オブジェクトを生成するときは、「親ウィジェット」と「オプション」を指定することができます。
textvariable オプション
textvariable
オプションには、
tkinter.Variable
オブジェクト (StringVar
など) を格納した変数を指定します。
width オプション
テキストボックスの幅を変更したい場合は、
width
オプションに「任意の整数」を指定します。
Example
source code
from tkinter import Tk
from tkinter import ttk
class MainFrame(ttk.Frame):
def __init__(self, master):
super().__init__(master)
self.configure(padding=(6, 4))
self.pack()
self.make_style()
self.create_widgets()
def make_style(self):
pass
def create_widgets(self):
self.entry1 = ttk.Entry(self, width=2)
self.entry1.pack(side="top", anchor="w", padx=4, pady=4)
self.entry2 = ttk.Entry(self, width=4)
self.entry2.pack(side="top", anchor="w", padx=4, pady=4)
self.entry3 = ttk.Entry(self, width=8)
self.entry3.pack(side="top", anchor="w", padx=4, pady=4)
root = Tk()
root.title("Tkinter win")
frame = MainFrame(root)
frame.mainloop()
result
テキストボックスの値を取得する
テキストボックスの値を取得する方法は 2 通り有ります。
1 つ目は、Entry
オブジェクトの textvariable
オプションで指定した Variable
オブジェクトの
get
メソッドを使います。
2 つ目は、Entry
オブジェクトの get
メソッドを使います。
Example
source code
from tkinter import StringVar
from tkinter import Tk
from tkinter import ttk
class MainFrame(ttk.Frame):
def __init__(self, master):
super().__init__(master)
self.configure(padding=(6, 4))
self.pack()
self.make_style()
self.create_widgets()
def make_style(self):
pass
def create_widgets(self):
self.entry1_var = StringVar()
self.entry1 = ttk.Entry(self, textvariable=self.entry1_var,
width=16)
self.entry1.pack(side="top", anchor="w", padx=4, pady=4)
self.button1 = ttk.Button(self, text="Variable.get",
command=self.button1_action)
self.button1.pack(side="top", anchor="w", padx=4, pady=4)
self.button2 = ttk.Button(self, text="Entry.get",
command=self.button2_action)
self.button2.pack(side="top", anchor="w", padx=4, pady=4)
def button1_action(self):
print("Call button1_action")
print(self.entry1_var.get())
def button2_action(self):
print("Call button2_action")
print(self.entry1.get())
root = Tk()
root.title("Tkinter win")
frame = MainFrame(root)
frame.mainloop()
result
表示内容:
ターミナル (テキストボックスに Hello と入力して、Variable.get ボタンをクリックした時):
Call button1_action Hello
ターミナル (テキストボックスに Hello と入力して、Entry.get ボタンをクリックした時):
Call button2_action Hello
テキストボックスの値を消去する
テキストボックスの値を消去する方法は 2 通り有ります。
1 つ目は、Entry
オブジェクトの textvariable
オプションで指定した Variable
オブジェクトの
set
メソッドを使います。
2 つ目は、Entry
オブジェクトの delete
メソッドを使います。
Example
source code
from tkinter import StringVar
from tkinter import Tk
from tkinter import ttk
class MainFrame(ttk.Frame):
def __init__(self, master):
super().__init__(master)
self.configure(padding=(6, 4))
self.pack()
self.make_style()
self.create_widgets()
def make_style(self):
pass
def create_widgets(self):
self.entry1_var = StringVar()
self.entry1 = ttk.Entry(self, textvariable=self.entry1_var,
width=16)
self.entry1.pack(side="top", anchor="w", padx=4, pady=4)
self.button1 = ttk.Button(self, text="Variable.set",
command=self.button1_action)
self.button1.pack(side="top", anchor="w", padx=4, pady=4)
self.button2 = ttk.Button(self, text="Entry.delete",
command=self.button2_action)
self.button2.pack(side="top", anchor="w", padx=4, pady=4)
def button1_action(self):
self.entry1_var.set("")
def button2_action(self):
self.entry1.delete(0, "end")
root = Tk()
root.title("Tkinter win")
frame = MainFrame(root)
frame.mainloop()
result