欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tkinter笔记(1.5-1.6)

程序员文章站 2022-04-12 10:34:49
...

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,外观即变成按键形式。

相关标签: tkinter