我正在使用Tkinter的Canvas为我的GUI创建简单的图形。我注意到我想将我的形状和文字放在画布的角落,但它们最终部分隐藏了。对于文本,我看到有一个anchor
选项,文档建议设置为NW
,例如,如果我想将文本放在左上角,但即便如此我只看到一个文字的开头有点被切断了。这是我的代码:
import Tkinter as tk
root = tk.Tk()
root.geometry("300x300")
c = tk.Canvas(root, bg="green", width=300, height=300)
c.pack(fill="both", side="right", expand=True)
c.create_text(0,0,text="Hello world!", anchor="nw")
root.mainloop()
我知道我可以调整文本开始位置的坐标,通过反复试验找出哪一个给出了最好看的结果,但我想知道是否有更聪明的方法来做。
当我尝试创建形状时,我注意到类似的事情,例如圆圈:
import Tkinter as tk
root = tk.Tk()
root.geometry("300x300")
c = tk.Canvas(root, bg="green", width=300, height=300)
c.pack(fill="both", side="right",expand=True)
c.create_oval(0,0,300,300, fill="gray")
root.mainloop()
对于圆圈,最靠近边缘的圆的部分被切掉。如果我伸展并拖动窗口变大,我可以看到圆圈的最右边和底部,所以它们正在绘制。我也没有看到与anchor
相似的选项。
我注意到画布和窗户之间的画布周围最微小的空白区域。我设置了包装选项以填充所有方面,并在有额外空间可用时进行扩展。我想知道这是不是问题。
答案 0 :(得分:4)
不幸的是,画布边框和高亮环位于小部件内部,因此使用了一些可绘制区域,并且可能隐藏其他对象的部分。
最简单的解决方案是将highlightthickness
和borderwidth
属性设置为零:
c.configure(highlightthickness=0, borderwidth=0)
如果您需要边框和/或高光环,请将画布放在框架内。