良い質問。私の答えが役立つことを願っています。
注:私はpython 3.3を使用しているため、tkinterとTkinterをインポートする必要があります...
text1
以下の手続き型コード行では、テキスト変数を文字列変数 (ここでは)として定義する必要があります= StringVar()
。
次に、エントリ ウィジェット (ここではtext_entry
) を作成するときに、ユーザーがボタンを押したときに入力された値を受け取る変数を示します(.., textvariable = text1)
。
次に、関数を使用してボタン ウィジェットを作成しますcommand =
(ここでprint_text(*args))
は、ユーザーが入力したものを出力します。
text1 はリスト (またはタプルかもしれませんが、確かではありません) であるため、属性の.get
メソッドを使用して入力された値を取得する必要があります。ここにそのprint(text1.get())
さらにいくつか追加しました。text_entry.focus()
ユーザーが入力スペースをクリックする必要がないように、プログラムの実行時にそのウィジェットにカーソルを置き、root.bind('<Return>', print_text)
ユーザーがヒットEnterして印刷できるようにします。
from tkinter import *
from tkinter import ttk
def print_text(*args):
try:
print(text1.get())
except ValueError:
pass
root = Tk()
root.title("Little tkinter app for printing")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column = 0, row = 0, sticky = (N,W,E,S))
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
text1 = StringVar()
text_entry = ttk.Entry(mainframe, width = 20, textvariable=text1)
text_entry.grid(column = 1, row = 2, sticky = (N,W,E,S))
ttk.Button(mainframe, text = "Print!", command =
print_text(text1)).grid(column = 1, row = 3, sticky = (E))
for child in mainframe.winfo_children():
child.grid_configure(padx = 5, pady = 5)
text_entry.focus()
root.bind('<Return>', print_text)
root.mainloop()