一尘不染

支持文本小部件透明性或带有画布背景的文本小部件的Python GUI工具包?

python

我正在尝试编写一个在条纹背景上显示可滚动文本小部件的程序。条纹的宽度,条纹之间的间隔以及条纹的颜色可由用户设置。

这是我所想的一个简单而又肮脏的例子:

例

(这似乎是一个丑陋且毫无意义的程序,但对于某些类型的眼部疾病,它可用作治疗工具)

我最初的想法是在画布小部件上将条纹绘制为矩形。然后,我计划在画布上覆盖带有透明背景的文本小部件。

现在,我正在使用Tkinter。但是看来Tkinter中的文本小部件不支持透明性或使用画布作为背景。看起来只有纯色可以用作背景。

哪些可用于Python的GUI工具包支持使用文本小部件背景透明性或使用画布作为背景的文本小部件?


阅读 199

收藏
2021-01-20

共1个答案

一尘不染

如果您愿意使用Tkinter,这是使用canvas小部件的简短示例。

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        canvas = tk.Canvas(self, width=800, height=500)
        canvas.pack(side="top", fill="both", expand=True)
        for i in range(0, 800, 40):
            i+= 40
            fill = "yellow" if (i / 40) % 2 == 0 else "green"
            canvas.create_rectangle(i, 0, i+20, 500, fill=fill, outline="")
        canvas_id = canvas.create_text(10, 10, anchor="nw")
        canvas.itemconfig(canvas_id, text="this is the text "*300, width=780)
        canvas.itemconfig(canvas_id, font=("courier", 12))
        canvas.insert(canvas_id, 12, "new ")

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

看起来是这样的:

工作示例的屏幕截图

留给读者增加滚动的练习。

2021-01-20