前言
在Tkinter中,有一种叫Listbox的神奇控件,它可以显示元素,与滚动条联动。但是!有时我们想让用户在A窗口选中项目然后在B窗口填文本,当用户在Entry按下CTRL+A时,很快啊,那Listbox选中项立刻就没了啊,还要我们再选一遍,就很不舒服,于是,这个伪Listbox诞生了。
实现
引入模块
既然说到了Text,那么首先一定就要
from tkinter import Text
对于引入Tkinter,我一般这么写:
class tk:
from tkinter import Tk, Text, ...
而这里,我们需要用到Tk、Text,而Scrollbar(滚动条)可以加,可以不加。
主要功能部分
Text控件布局
现在开始编写吧。首先像往常一样创个窗口,然后创建Text控件…
if __name__ == "__main__":
root = tk.Tk() #创建窗口
root.title("标题") #设置标题
#这里是一定要设置selectforeground和selectbackground的,否则CTRL+A会出现奇怪的现象
textBox = tk.Text(root, foreground = "black", selectforeground = "black",
background = "white", selectbackground = "white")
textBox.pack(fill = "both", expand = 1)
#往Text增加元素(增加文本,根据情况分行)
for item in ["The first\n", "The second\n", "The third"]:
textBox.insert("end", item)
textBox["state"] = "disabled"
root.mainloop() #循环
此时雏形已经出现,但是,无论怎么点,都不会有高亮当前项,所以,我们需要继续往下写。
让光标所在行高亮
首先,我们增加一个tag,叫"current_line":