如何为python代码添加颜色
只是想知道我怎样才能给我的输出添加颜色。代码如下: 使用pythontkintergui如何为python代码添加颜色,python,tkinter,Python,Tkinter,只是想知道我怎样才能给我的输出添加颜色。代码如下: 使用pythontkintergui 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 BM
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"
如果体重指数<18.5:
self.answer_label['text']=“体重指数为“+str(BMI)+”的人体重不足”
elif 18.5因此,主要问题是在tkinter中,标签小部件接受单一颜色
如果使用.pack(side=“left”)
打包每个标签,并为每个小部件分配颜色,则可以并排组合各种标签的文本
这不太实际
另一种为文本着色的方法是使用tkinter.text
小部件。问题是在标签
的另一侧,文本
小部件太宽,允许许多选项格式化其中的文本。一个使用“文本”小部件作为主要组件的程序,只要有几百行代码,就可以像MicrosoftWord那样成为富文本的文本编辑器
缺点是文档很难找到,示例很少,而且不完整。(这就是我给你这个答案的主要动机——再举一个“真实世界”的例子也不错)
文本小部件最完整(但仍然缺乏)的文档如下:
通过阅读,您会发现要在文本小部件中输入彩色文本,您必须使用文本属性预先配置“标记”,然后使用其插入文本,使用索引作为位置,并标记您正在使用的标记
我为Text
小部件创建了一个子类,它对一些样式元素(以及“state”配置)进行了硬编码,因此它的行为更像一个标签,并添加了两个新方法:append
,它允许您将文本添加到元素的末尾,指定颜色和背景色,以及clear
,清除所有内容并重新开始
其思想是使用下面的“ColoredLabel”class I列表来代替“Label”小部件。由于它继承自tkinter小部件,“配置”、“打包”、“网格”等方法将正常工作,然后使用其“附加”方法创建其内容:
# 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")
self.answer\u label.clear()
self.answer\u label.append(“体重指数为的人”)
如果体重指数<18.5:
自我回答标签附加(str(bmi),“黄色”)
self.answer\u label.append(“体重不足”)
elif 18.5=30:
自我回答标签附加(str(bmi),“红色”)
self.answer\u label.append(“肥胖”)
(当然,如果您希望整个标签的颜色相同,label
支持它-只需做self.answer\u label['foreground']='red'
,在您的原始文本上)这将比看起来难一点-虽然没有完整的答案,我建议您学习使用str.format方法,并用您想要得到的颜色示例编辑您的问题。