gpt4 book ai didi

python - 更改 tkinter 文本框小部件中每隔一行文本的背景颜色

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:17 24 4
gpt4 key购买 nike

我有一个文本框小部件,我只用它来打印调试数据,我想更改文本框小部件中每一行文本的背景颜色,以便于阅读。我一直在研究如何使用文本框小部件突出显示文本,但似乎无法弄清楚如何让每一行的背景颜色发生变化。可以这样做吗?

到目前为止,我已经尝试过使用标签,但我认为我误解了如何使用它们或其他东西,因为我无法获得任何结果。我在 google 上进行的搜索提出了有关突出显示特定单词的问题,但我找不到任何类似的方案来处理。

如果有人知道我可以查看的某些资源,或者可以为我指明正确的方向,那就太好了。举个例子会更好,但我不希望有人为我做跑腿工作。

谢谢!

最佳答案

标签允许您更改一系列文本的背景和前景色(以及一些其他属性)。

如果您一次添加一行数据,您可以在每次插入时应用一个标签,并且只需为每一行交替使用标签。例如,第一个插入使用标记“奇数”,第二个插入使用“偶数”标记,第三个插入使用“奇数”标记,依此类推。

如果您在 block 中插入数据,您可以计算起始行号和结束行号,然后遍历每一行以应用标签。

这是第一种技术的示例:

import Tkinter as tk

class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.text = tk.Text(self, wrap=None)
self.vsb = tk.Scrollbar(self, command=self.text.yview, orient="vertical")
self.text.configure(yscrollcommand=self.vsb.set)

self.vsb.pack(side="right", fill="y")
self.text.pack(side="left", fill="both", expand=True)

self.text.tag_configure("even", background="#e0e0e0")
self.text.tag_configure("odd", background="#ffffff")

with open(__file__, "r") as f:
tag = "odd"
for line in f.readlines():
self.text.insert("end", line, tag)
tag = "even" if tag == "odd" else "odd"


if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()

这是一个在事后添加高亮的方法:

def highlight(self):
lastline = self.text.index("end-1c").split(".")[0]
tag = "odd"
for i in range(1, int(lastline)):
self.text.tag_add(tag, "%s.0" % i, "%s.0" % (i+1))
tag = "even" if tag == "odd" else "odd"

关于python - 更改 tkinter 文本框小部件中每隔一行文本的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26348989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com