TkInter是python下的一个标准GUI库,之前介绍过的graphics库就是基于TkInter编写的。

Demo小例子

之前做了一些开发是关于TkInter的Text控件的,所以在这里总结一下Text相关的用法,废话不多说,我们直接来看一个TkInter程序小例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import tkinter as tk
def main():
root = tk.Tk() # TkInter主进程
text=tk.Text(root) # Text控件
text.tag_config('r', foreground='red') # 设定Text文字格式
text.tag_config('b', foreground='black')
text.insert(0.0, 'Hello ', 'r') # 插入Text文字
text.insert(tk.END,'World !\n','b')
text.see('0.0')
text.mark_set('insert', '0.0')
text.pack(side=tk.LEFT, fill=tk.BOTH) # 添加到pack布局
tt=text.get("0.0", "end") # 获取所有文本
scrl = tk.Scrollbar(root,orient=tk.VERTICAL) # 滚动条Scrollbar控件
scrl.pack(side=tk.RIGHT, fill=tk.Y) #添加到pack布局
text['yscrollcommand'] = scrl.set # Text绑定Scrollbar
scrl['command'] = text.yview # Scrollbar绑定Text
def addLine():
for i in range(int(var.get())):
text.insert(tk.CURRENT,'Hello World !\n','b')
def clear():
text.delete(0.0, tk.END) # 清空Text
tk.Button(root, text='clear', command = clear).pack(fill = tk.X) # 添加按钮
tk.Button(root, text='add', command = addLine).pack(fill = tk.X)
var = tk.StringVar() # TkInter字符串
var.set('8')
tk.Entry(root, textvariable = var).pack(fill = tk.X) # 添加Entry
tk.Label(root, text = 'lines').pack(fill = tk.X) # 添加Label
root.mainloop()
if __name__=="__main__":
main()

程序运行结果如下:

TkInter demo

Text控件几点说明:

光标位置

光标位置是通过 ‘x.y’ 来确定的,其中 x 为行数,y 为列数,如 ‘0.0’ 就为文本的起始位置。另外 CURRENT 为当前光标的位置,END 为文本末尾的位置。

与Scollbar控件绑定

这两个控件要互相绑定才有作用,如下:

1
2
text['yscrollcommand'] = scrl.set # 让Text位置反馈给Scrollbar
scrl['command'] = text.yview # 让Scrollbar操控Text