#tk_entry_text.py
#学习tk的Entry组件,学习在界面中如何实现输入及显示信息
import tkinter as tk
####################第一步
window = tk.Tk()
window.title('学习Entry组件')
#这里是设置初始窗口大小,用户可以拉动边框改变窗口大小。
window.geometry('450x400')
################第二步
#创建tk”输入”组件,属于“window”的子组件
#show是你输入字符后,希望以什么方式显示,例如输mima时,希望用*显示,那么show='*'
e = tk.Entry(window,show='N')
#挂在“window“内,让e组件在"window"上显示
e.pack()
########################第五步
def insert1():
#var的值,来自于tk.Entry实例化e的get方。而e创建于Entry组件,即你输入啥,就get到啥
var = e.get()
#实例t在第四步创建,是一个tk文本组件实例。实例t的insert方法,
#括号内第二个参数是要输入的值,这里var是字符串;括号内第一个参数insert表示在文本中的光标后插入var的值,tk实例insert方法很方便啊。
t.insert('insert',var)
#实现插入到文本末尾的按钮的方法 insert2
def insert2():
var = e.get()
#括号内end表示text文末插入var的值,不用insert添加,
t.insert('end',var)
######################扩展 insert3之insert方法
def insert3():
var = e.get()
#在text组件文本中的x行,y列后插入var值
#x1.get()获取的是字符串
x = int(x1.get())
y = int(y1.get())
z = x+y*0.1
#insert方法的第一个参数z,其实是指第x行,第y列。z是一个float型。
t.insert(z,var)
print('x.get的类型',x1.get().__class__)
print('z的类型',z.__class__)
####################第三步
#button组件,command=insert1 表示点击button1按钮后,调用insert1方法
button1 = tk.Button(window,text='插入光标后',width = 15,height = 2,command=insert1)
button1.pack()
#创建一个让输入的文字插入到文本末尾的按钮
button2 = tk.Button(window,text='插入文本末尾',width = 15,height = 2,command=insert2)
button2.pack()
#########################扩展 insert3之button组件
#没有try except,未输入x,y的值,按下button3按钮会报错
button3 = tk.Button(window,text='插入某行',width = 15,height = 2,command=insert3)
button3.pack()
#扩展 insert3之 x,y输入框
labelx=tk.Label(window,text='x:',justify=tk.RIGHT,width=80)
labelx.pack()
x1 = tk.Entry(window)
x1.pack()
#创建y列 Label和Entry
labely=tk.Label(window,text='y:',justify=tk.RIGHT,width=80)
labely.pack()
y1 = tk.Entry(window)
y1.pack()
#######################第四步
#在window内创建一个文本子组件“t”
#height=5,表示5个字符高,而不是5个像素高。这也意味着可以显示五行字符。超出后,拉动光标可以显示
t = tk.Text(window,height=5,width=200)
#挂上去,画上去,放在窗口内,pack()大致就是这意思
t.pack()
#循环,di层调用了许多东东。我们只要记得要想弹出界面,最后记得Tk()实例名+mainloop()。
window.mainloop()