python之tkinter之Entry
1 创建变量entryContent,类型为StringVar,此类型为tkinter模块定义的。代码中使用value=’初始值’对变量进行了初始化,实际应用中一般不需要初始化。
entryContent = StringVar(value=’初始值’)
2 创建Entry组件,附属于主窗口,同时和变量建立起联系
widgetEntry1 = Entry(master=mainwindow, textvariable=entryContent)
3 Entry属性设置
设置字体和长度
widgetEntry1.config(font=('黑体', 20), width=25)
设置显示模式,如果是密码框的话显示为*,正常不需要设置
widgetEntry1.config(show='*')
设置背景颜色和边框宽
widgetEntry1.config(bg='white', bd=5)
4 布局Entry,本例中将Entry代码写在button代码之前,布局的时候先对Entry进行了布局。其实常规的做法是将画面所有组件创建并设置完成后统一进行布局。anchor的意为处于当前布局的那个方位,包含["nw", "n", "ne", "w", "center", "e", "sw", "s", "se"],默认center。不理解没关系,代码敲一下运行以下就行了
widgetEntry1.pack(anchor='w')
5 对确认按钮widgetButton1的响应函数confirmFunc进行改写,实现按下按钮弹出对话框显示widgetEntry1的内容。
def confirmFunc():
tkinter.messagebox.showinfo(title='提示', message=entryContent.get())
6 此处entryContent是作为全局变量被调用的,如果我们想通过对函数传参实现呢?例如我们这样写代码:
def confirmFunc(content):
tkinter.messagebox.showinfo(title='提示', message=content)
# 设置按下之后执行的程序
widgetButton1.config(command=confirmFunc('文本框内容为:'+entryContent.get()))
执行结果如下图,按下对话框的确定后才能正常运行到我们的主画面,这是因为widgetButton1在设置command时先调用了confirmFunc函数。
7 解决方案:使用python的闭包函数功能实现confirmFunc函数的延迟调用。
widgetButton1.config(command=lambda:confirmFunc('文本框内容为:'+entryContent.get()))
类似于:
def confirmFunc(content):
def inner():
tkinter.messagebox.showinfo(title='提示', message=content)
return inner
widgetButton1.config(command=confirmFunc('文本框内容为:'+entryContent.get()))