gpt4 book ai didi

python - 如何向我的 python 代码添加颜色

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:42 25 4
gpt4 key购买 nike

只是想知道如何为我的输出添加颜色。代码如下:使用 python tkinter 图形用户界面。

    if bmi < 18.5:
self.answer_label['text'] = "A person with a BMI of " + str(bmi) + " is underweight "
elif 18.5 <= bmi < 25:
self.answer_label['text'] = "A person with a BMI of " + str(bmi) + " has a healthy weight"
elif 25 <= bmi < 30:
self.answer_label['text'] = "A person with a BMI of " + str(bmi) + " is overweight"
elif bmi >= 30:
self.answer_label['text'] = "A person with a BMI of " + str(bmi) + " is obese"

最佳答案

所以,主要问题是在 tkinter 中,Label 小部件接受单一颜色。

如果您将每个标签都包含 .pack(side="left") ,则可以并排组成各种标签的文本。 - 并为每个小部件指定颜色。

这不太实用。

给文本着色的另一种方法是使用 tkinter.Text小部件代替。问题是在Label的对面,Text小部件太宽泛,允许使用很多选项来格式化其中的文本。只需几百行,使用“文本”小部件作为其主要组件的程序就可以像 Microsoft Word 一样成为富文本的文本编辑器。

缺点是文档很难找到,示例很少,而且不完整。 (这是我为您提供这个答案的主要动机 - 再一个“现实世界”的例子也不错)。

最完整(但仍然缺乏)的文本小部件文档位于:http://effbot.org/tkinterbook/text.htm

通过阅读它,您会发现为了能够在文本小部件中输入彩色文本,您必须使用文本属性预先配置“标签”,然后使用其 insert使用索引作为位置的文本,并标记您正在使用的标签。

我创建了 Text 的子类小部件,它对一些样式元素(和“状态”配置)进行硬编码,使其行为更像标签 - 并添加了两个新方法:append它允许您将文本添加到元素的末尾,指定颜色和背景颜色,以及 clear ,清除其所有内容并重新开始。

这个想法是,您使用我在下面列出的“ColoredLabel”类来代替您的“Label”小部件。由于它继承自 tkinter Widget,因此“configure”、“pack”、“grid”等方法将正常工作 - 然后使用其“append”方法来创建其内容:

# boilerplate to assert working under Python 2.7 as well as Python 3:
try:
import tkinter
except ImportError:
import Tkinter as tkinter

class ColoredLabel(tkinter.Text):
def __init__(self, parent, text="", **kw):
params = {"relief": "flat", "border": 0, "height": 1, "highlightthickness": 0}
kw.update(params)
super(ColoredLabel, self).__init__(parent, **kw)
self.tags = set()
self.length = 0
self.append(text)

def clear(self):
self["state"] = "normal"
self.length = 0
self.delete("1.0", tkinter.END)
self["state"] = "disabled"

def append(self, text, color=None, background=None):
"""Inserts text at the end of the existing text.
Colors passed in the parameter are used for inserted text
"""
self.length += len(text)
tagname = "{}_{}".format(color, background)
if tagname not in self.tags:
params = {}
if color:
params["foreground"] = color
if background:
params["background"] = background
self.tags.add(tagname)
self.tag_config(tagname, **params)
self["state"] = "normal"
self["width"] = self.length
self.insert(tkinter.END, text, (tagname,))
self["state"] = "disabled"

如果您的“answer_label”属性被定义为“ColoredLabel”,您只需将代码编写为:

self.answer_label.clear()
self.answer_label.append("A person with a BMI of ")
if bmi < 18.5:
self.answer_label.append(str(bmi), "yellow")
self.answer_label.append(" is underweight ")
elif 18.5 <= bmi < 25:
self.answer_label.append(str(bmi), "green")
self.answer_label.append(" has a healthy weight")
elif bmi >= 30:
self.answer_label.append(str(bmi), "red")
self.answer_label.append(" is obese")

(当然,如果您希望整个标签颜色相同, Label 已经支持 - 只需在原始文本上执行 self.answer_label['foreground'] = 'red' 即可)

关于python - 如何向我的 python 代码添加颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42707237/

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