Tkinter笔记(1.5-1.6)
1.5 Entry文本框
文本框控件是用于收集用户输入的基本控件。它们也可以用于显示信息,或者干脆设为disabled不再响应用户交互。文本框控件中的文本,被限制为单行,而且只能使用同一种字体。如果输入的文本过长,文本框会向后卷动,保持光标始终在显示区域。可以用方向键改变文本框的显示位置。也可以调用文本框的scrolling方法,为其绑定鼠标事件或app上的其他操作。
另外,文本框的width选项,接受的数值不再是像素,而是字符数。
文本变量StringVar
每个文本框都需要指定一个变量,用来存储、显示其内容。
e = tk.StringVar() # 创建StringVar字符串变量
ety = tk.Entry(root, width=30, textvariable=e)
ety.pack(side='left', padx=10)
e.set('This is an entry!')
1.字符串变量是用类tk.StringVar构建。
2.使用Entry的textvariable选项,与Entry对象关联。
3.如果要在脚本中设置其内容,应当调用其set方法。
4.一旦关联,Entry中的输入操作也可以改变其值。
用得还是不太熟练,经查,StringVar是Tcl下的对象,类似的还有StringVar、BooleanVar、DoubleVar、IntVar。StringVar.set接受的是tuple,如果给出的是字符串,也是转化成tuple。由于Tuple对象值不能改变,所以可以先定义一个list,再将list转化为tuple,再使用set()方法。
其他方法:
StringVar.get():获取StringVar的值,是个ASCI或Unicode字符串。另外,BooleanVar.get()结果是0或1,DoubleVar.get()获取的是python的浮点类型数据;IntVar.get()获取的是python整型数据。
StringVar.trace(mode, callback):
比如StringVar.trace(‘w’,callback)是当StringVar
1.6 RadioButton单选按钮
单选按钮需要重新命名了,现在的汽车上,已经很少有机械式的按钮了。言归正传,单选按钮的目的是提供互斥的选项,选择一个按钮会取消对其他按钮的选择。
类似于按钮控件,单选按钮可以显示文本或者图像,并且文本也可以扩展到多行,字体当然也必须是统一的。单选按钮通常成组使用,对应于同一个变量。
一组RadioButton的功能实际上是输出一个值。而一个RadioButton选项有:root,text,value,variable。其中,前三个都是单独安排的,variable才是对应的那个Var对象(IntVar、BooleanVar等),只有一个。因为单选指的就是选择这个值。点选某个选项的含义就是将此选项的value赋值给公用的variable。所以使用时应注意两者类型应当相同。书中所用的例子是整型数值,variable用的是IntVar类型。下面的例子中,value和variable用的都是字符串,也是可以的。
class GUI:
def __init__(self, master):
# 构建标签
lb = tk.Label(master, text='Select your favorite language:')
lb.pack()
# 创建字符串变量
self.svar = tk.StringVar()
# 生成系列RadioButton
for txt, val in [('python', 'python'), ('C++', 'C++'), ('Ruby', 'Ruby')]:
rb = tk.Radiobutton(master, text=txt, value=val, variable=self.svar)
rb.pack(padx=5, pady=5)
self.svar.set('C++')
btn = tk.Button(master, text='OK', command=self.printoption)
btn.pack(pady=5)
def printoption(self):
print('Your favorite language is ' + self.svar.get())
功能:选择了一个选项以后,点击ok,即可打印出选项内容来。
Radiobutton还有一种形式,就是将选项indicatoron置为1,外观即变成按键形式。
上一篇: MFC如何修改ListBox的数据
下一篇: range()的10篇内容推荐