gpt4 book ai didi

python - 如何将条目中的部分文本加粗并更改其背景颜色?

转载 作者:行者123 更新时间:2023-12-02 02:50:25 25 4
gpt4 key购买 nike

我正在创建一个基于 Tkinter 的 GUI,它有一个 Entry 小部件。我想把它的一部分文字加粗并改变它的背景颜色。但我不知道我该怎么做。如果我使用 Text 小部件,我可以只使用标签,但看起来它们不能与 Entry 小部件一起使用:

此代码使用文本小部件:

import tkinter as tk
from tkinter.font import Font


root = tk.Tk()
text = tk.Text(root, font=Font(size=12))
text.insert("1.0", "I want THIS PART to be bold and have red background")
text.tag_configure("bold-and-red", font=Font(size=12, weight="bold"), background="red")
text.tag_add("bold-and-red", "1.7", "1.16")
text.pack()
root.mainloop()

一切正常(显示文本小部件并且“这部分”是粗体并具有红色背景)

这段代码使用了 Entry 小部件:

import tkinter as tk
from tkinter.font import Font


root = tk.Tk()
entry = tk.Entry(root, font=Font(size=12))
entry.insert(0, "I want THIS PART to be bold and have red background")
entry.tag_configure("bold-and-red", font=Font(size=12, weight="bold"), background="red")
entry.tag_add("bold-and-red", 7, 16)
entry.pack()
root.mainloop()

我刚得到错误:

AttributeError: 'Entry' object has no attribute 'tag_configure'

有没有办法为 Entry 小部件做我想做的事情?

最佳答案

正如@BryanOakley 所说,仅更改某些字符外观的唯一方法是使用自定义 Text 小部件。

这是一个示例实现:

import tkinter as tk
from tkinter.font import Font


class OneLineText(tk.Text):
def __init__(self, master, *args, **kwargs):
super().__init__(master, *args, height=1, wrap="none", **kwargs)

self.bind("<Return>", lambda event: "break")
self.bind("<Key>", self.on_keypress)
self.bind("<Control-a>", self.select_all)
self.bind("<Control-A>", self.select_all)
self.bind("<Control-v>", lambda event: self.see("end"))
self.bind("<Control-V>", lambda event: self.see("end"))

def on_keypress(self, event):
self.see("end-1c")

def select_all(self, event):
self.tag_add("sel", "1.0", "end-1c")
return "break"

def insert(self, index, string):
string = string.replace("\n", "")
if isinstance(index, int):
super().insert("1.{}".format(index), string)
return
if index == "end":
super().insert("end-1c", string)
return
super().insert(index, string)

def get(self):
return super().get("1.0", "end-1c")

root = tk.Tk()
entry = OneLineText(root, font=Font(size=12))
entry.insert(0, "I want THIS PART to be bold and have red background")
entry.tag_configure("bold-and-red", font=Font(size=12, weight="bold"), background="red")
entry.tag_add("bold-and-red", "1.7", "1.16")
entry.pack()
root.mainloop()
Text 小部件的

insertget 方法被修改为像在 Entry 小部件中一样工作。

A screenshot

关于python - 如何将条目中的部分文本加粗并更改其背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62088472/

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