在Tkinter中绘制一个从红色到绿色的比例

用户名

我想画一个从红色到绿色的比例尺。我设法做到了从绿色到黄色的范围。现在我有2种可能的解决方案:

  • 绘制2个渐变:从红色到黄色的渐变,从黄色到绿色的渐变。然后,我可以链接两个图纸。

  • 或者我认为是更好的解决方案:在红色和绿色之间绘制一个渐变,在黄色上设置检查点。

如何实施第二种解决方案?

这是我的代码,从绿色到黄色。你可以测试一下。

import tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        f = GradientFrame(root)
        f.pack(fill="both", expand=True)

class GradientFrame(tk.Canvas):
'''A gradient frame which uses a canvas to draw the background'''
    def __init__(self, parent, borderwidth=1, relief="sunken"):
    tk.Canvas.__init__(self, parent, borderwidth=borderwidth, relief=relief)
        self._color1 = "green"
        self._color2 = "yellow"
        self._color3 = "red"
        self.bind("<Configure>", self._draw_gradient)

def _draw_gradient(self, event=None):
    '''Draw the gradient'''
    self.delete("gradient")
    width = 200
    height = 50
    limit = width
    (r1,g1,b1) = self.winfo_rgb(self._color1)
    (r2,g2,b2) = self.winfo_rgb(self._color2)
    (r3,g3,b3) = self.winfo_rgb(self._color3)
    r_ratio = float((r2-r1)) / limit
    g_ratio = float((g2-g1)) / limit
    b_ratio = float((b2-b1)) / limit

    for i in range(limit):
        nr = int(r1 + (r_ratio * i))
        ng = int(g1 + (g_ratio * i))
        nb = int(b1 + (b_ratio * i))
        color = "#%4.4x%4.4x%4.4x" % (nr,ng,nb)
        self.create_line(0,i,height,i, tags=("gradient",), fill=color)
    self.lower("gradient")

    for i in range(limit):
        nr = int(r1 + (r_ratio * i))
        ng = int(g1 + (g_ratio * i))
        nb = int(b1 + (b_ratio * i))
        color = "#%4.4x%4.4x%4.4x" % (nr,ng,nb)
        self.create_line(0,i,height,i, tags=("gradient",), fill=color)
    self.lower("gradient")

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

没有上面代码的概括性或一般美感,我在这里为您提供了一个简单的解决方案(针对红色到绿色的渐变实现):

import tkinter

def rgb(r, g, b):
    return "#%s%s%s" % tuple([hex(c)[2:].rjust(2, "0") for c in (r, g, b)])

root = tkinter.Tk()
root.title("Gradient")

gradient1 = tkinter.Canvas(root, width=255*2, height=50)
gradient1.pack()

gradient2 = tkinter.Canvas(root, width=255*2, height=50)
gradient2.pack()

for x in range(0, 256):
    r = x
    g = 255-x
    gradient1.create_rectangle(x*2, 0, x*2 + 2, 50, fill=rgb(r, g, 0), 
        outline=rgb(r, g, 0))

for x in range(0, 256):
    r = x*2 if x < 128 else 255
    g = 255 if x < 128 else 255 - (x-128)*2
    gradient2.create_rectangle(x*2, 0, x*2 + 2, 50, fill=rgb(r, g, 0), 
        outline=rgb(r, g, 0))

我相信这就是您所说的“黄色检查点”。感谢您的挑战!:^)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一个活动中的两个片段,比例

来自分类Dev

通过将数字分组到一个范围中以绘制MATLAB /倍频程

来自分类Dev

在屏幕上随机生成一个圆圈,使其变为绿色或红色

来自分类Dev

在Gnuplot中将轮廓从一个图形绘制到另一个图形

来自分类Dev

创建一个在红色和绿色之间切换的按钮

来自分类Dev

如何在python中创建从绿色到红色的热图?

来自分类Dev

绘制随机的圆,将任何不与另一个圆相交的圆涂成红色

来自分类Dev

最后一个括号→}变成红色而不是绿色,但是脚本正常工作(Google App脚本)

来自分类Dev

ggplot:将两个变量绘制到一个面中

来自分类Dev

在pyqtgraph中绘制一个矩形

来自分类Dev

在gnuplot中从x到y坐标绘制一个正方形

来自分类Dev

如何为一个样本比例绘制95%置信区间图

来自分类Dev

将多个矩形绘制到一个JPanel

来自分类Dev

QPixmap复制一个正方形的内容绘制到另一个图像中

来自分类Dev

红色到绿色渐变的算法

来自分类Dev

从绿色到红色,具体取决于值

来自分类Dev

在imagemagick中将图像绘制到另一个图像中?

来自分类Dev

如何将一个BufferedImage绘制到JPanel

来自分类Dev

TDD在Rails中:澄清红色-绿色测试

来自分类Dev

JAVA无法从另一个类中绘制到JFrame上

来自分类Dev

如何从一个SVG元素中的点绘制到另一个元素?

来自分类Dev

无法将 BufferedImage 绘制到另一个具有比例的 BufferedImage 中

来自分类Dev

tkinter 设置比例(创建一个 2x2 框)

来自分类Dev

在 NVD3 中在另一个图表的比例上绘制一个图表

来自分类Dev

如何选择一个目录并将其存储到 tkinter 中的变量中?

来自分类Dev

如何绘制一个矩形到脸部的位置?

来自分类Dev

将不同的 MQTT Topic 数据集中到节点红色的一个 JSON 字符串中

来自分类Dev

Python:从 Y 中的一个点绘制到 X 轴上的多个点的问题

来自分类Dev

我正在创建一个表格,并根据 + 或 - 值将文本着色为绿色或红色,有没有办法从数字中删除符号

Related 相关文章

  1. 1

    一个活动中的两个片段,比例

  2. 2

    通过将数字分组到一个范围中以绘制MATLAB /倍频程

  3. 3

    在屏幕上随机生成一个圆圈,使其变为绿色或红色

  4. 4

    在Gnuplot中将轮廓从一个图形绘制到另一个图形

  5. 5

    创建一个在红色和绿色之间切换的按钮

  6. 6

    如何在python中创建从绿色到红色的热图?

  7. 7

    绘制随机的圆,将任何不与另一个圆相交的圆涂成红色

  8. 8

    最后一个括号→}变成红色而不是绿色,但是脚本正常工作(Google App脚本)

  9. 9

    ggplot:将两个变量绘制到一个面中

  10. 10

    在pyqtgraph中绘制一个矩形

  11. 11

    在gnuplot中从x到y坐标绘制一个正方形

  12. 12

    如何为一个样本比例绘制95%置信区间图

  13. 13

    将多个矩形绘制到一个JPanel

  14. 14

    QPixmap复制一个正方形的内容绘制到另一个图像中

  15. 15

    红色到绿色渐变的算法

  16. 16

    从绿色到红色,具体取决于值

  17. 17

    在imagemagick中将图像绘制到另一个图像中?

  18. 18

    如何将一个BufferedImage绘制到JPanel

  19. 19

    TDD在Rails中:澄清红色-绿色测试

  20. 20

    JAVA无法从另一个类中绘制到JFrame上

  21. 21

    如何从一个SVG元素中的点绘制到另一个元素?

  22. 22

    无法将 BufferedImage 绘制到另一个具有比例的 BufferedImage 中

  23. 23

    tkinter 设置比例(创建一个 2x2 框)

  24. 24

    在 NVD3 中在另一个图表的比例上绘制一个图表

  25. 25

    如何选择一个目录并将其存储到 tkinter 中的变量中?

  26. 26

    如何绘制一个矩形到脸部的位置?

  27. 27

    将不同的 MQTT Topic 数据集中到节点红色的一个 JSON 字符串中

  28. 28

    Python:从 Y 中的一个点绘制到 X 轴上的多个点的问题

  29. 29

    我正在创建一个表格,并根据 + 或 - 值将文本着色为绿色或红色,有没有办法从数字中删除符号

热门标签

归档