目次
テキストボックスを作成する
テキストボックス (一行の文字列を入力することができるウィジェット) を作成するためには、
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()