2013-08-28 19 views
0

我正在嘗試編寫一個在條紋背景上顯示可滾動文本小部件的程序。條紋的寬度,條紋之間的間距以及條紋的顏色可由用戶設置。支持文本小部件透明度或帶畫布背景的文本小部件的Python GUI工具包?

這裏是我想象的快速和骯髒的例子:

Example

(這似乎是一個醜陋的和毫無意義的節目,但它是爲某些類型的治療有用的工具眼睛問題)

我最初的想法是在畫布小部件上繪製長方形的條紋。然後,我計劃將畫布疊加在具有透明背景的文本小部件上。

現在,我正在使用Tkinter。但似乎Tkinter中的文本小部件不支持透明度或將畫布用作背景。看起來只有純色可以用作背景。

什麼GUI工具包可用於Python,它將支持使用文本小部件背景透明度/或使用畫布作爲背景的文本小部件?

+1

我相信gtk3可以做到這一點,也許gtk2。您可能正在尋找pygame或pyglet的更多內容 – korylprince

+0

我曾考慮過使用pyglet,但pyglet的GUI工具包幾乎不存在或在過去5年內未更新。我會檢查gtk,謝謝:) – Josh

回答

1

如果您願意使用Tkinter,下面是一個使用畫布小部件的簡短示例。

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() 

這裏是什麼樣子:

screenshot of working example

添加滾動就留給讀者自己練習。

+0

謝謝!這工作很好,我得到它滾動和調整很好。但是......然後......我在整本書的長度(「綠野仙蹤」)中加載了一個字符串,這使得畫布開始在滾動過程中變得有趣並且凍結。我不確定畫布是否可以處理儘可能多的文字以便放入它... – Josh

+0

更新 - 我通過實現頁面來解決上述問題。一次只能在畫布上顯示一定數量的文本,而且它的效果很好。 – Josh