【问题标题】:Python Tkinter text backgroundPython Tkinter 文本背景
【发布时间】:2012-02-23 06:26:48
【问题描述】:

我正在尝试为 Tkinter 文本小部件设置背景颜色 - 我正在尝试复制示例 herehere,这两者似乎都表明我可以这样做:

w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white"))

但是当我尝试这个时,我从 Tkinker 收到一个错误:

w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white")
File "C:\python27\lib\lib-tk\Tkinter.py", line 2213, in create_text
return self._create('text', args, kw)
File "C:\python27\lib\lib-tk\Tkinter.py", line 2189, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: unknown option "-bg"

我尝试使用“背景”键,结果相同。

文本需要覆盖在一个圆圈上,圆圈的大小是动态生成的,所以当圆圈小于文本时,我想要一个纯色背景,这样圆圈的线条就不会破坏文本。

任何指向我做错了什么的指针?这是整个部分:

master = Tk()
w = Canvas(master, width=1000, height=1000)
w.config(bg='white')
w.pack()
w.create_oval(*coordsSet, width=3)
w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white")
mainloop()

【问题讨论】:

  • 你想用 create_text bg="white" 实现什么。背景应该已经是白色了,因为 Canvas 的背景是白色的。
  • 文本覆盖在一个圆圈上,所以当圆圈小于文本时,我想要一个纯色背景,这样圆圈的线条不会干扰文本。

标签: python text background tkinter


【解决方案1】:

不幸的是 create_text 不支持该选项。您可以覆盖一个支持 bg 的 tkInter 文本小部件,并在您的第二个链接中进行了描述。或者,您可以使用 bbox 函数获取文本的边界框,然后在文本下方覆盖一个白色矩形,效果类似。

第二种方法的例子:

i=w.create_text(*textSet, text=i[3], font=("Helvetica", 16))
r=w.create_rectangle(w.bbox(i),fill="white")
w.tag_lower(r,i)

【讨论】:

  • 是否可以返回正在使用的 bbox 的大小? (然后将其作为create_rectangle(返回值,fill =“white”)推回)文本也是动态生成的,因此它不一致。
  • 是的。执行以下操作: i=w.create_text(*textSet, text=i[3], font=("Helvetica", 16));r=w.create_rectangle(w.bbox(i),fill="white") ;w.tag_lower(r,i);
  • 太好了,谢谢,这正是我想要做的,另外我学到了更多关于分组对象的知识 - 奖励!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 2016-09-12
  • 1970-01-01
  • 2016-09-10
  • 2011-10-13
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多