我说的是 python Tkinter 特有的,我有文本和内联按钮,我使用的是像素坐标。现在我的文本字符串正在动态变化,但如果文本字符串很长就会溢出。
所以我想有什么办法可以根据文本长度更改坐标
例如:
canvas.create_text(20, 30, anchor=W, font="Purisa",
text="Most relationships seem so transitory")
如果我用这样的东西
canvas.create_text(20+len(text), 30, anchor=W, font="Purisa",
text="Most relationships seem so transitory")
我是 tkinter 的新手,得到了一个非常紧凑的调试代码,所以我不能一开始就动态地改变它
最佳答案
您可以根据文本的大小计算坐标,但是您需要找出给定字体中文本的大小(以像素为单位)。这可以在 Tkinter 中通过首先使用草稿 Canvas 和 bbox 方法来完成。创建文本项并捕获 id,然后使用 bbox 方法获取其大小。
scratch = Canvas()
id = scratch.create_text((0, 0), text=text, <options>)
size = scratch.bbox(id)
# size is a tuple: (x1, y1, x2, y2)
# since x1 and y1 will be 0, x2 and y2 give the string width and height
然后您可以根据结果计算出您的 x 和 y 坐标,并将其绘制在您的实际 Canvas 上。可能还有更有效的方法来执行此操作,但我还不知道。
或者您可能只想根据文本大小更改 x 位置,换句话说,使其右对齐。在 Tkinter 中,这最容易通过使用“anchor=E”选项并为 x 坐标提供文本区域的右边缘来完成:
canvas.create_text(ButtonX - 10, 30, anchor=E, ...)
例如,除了 anchor 和任何其他选项之外,您还可以使用“width=200”将文本包装在一个 200 像素宽的框中。
关于python - 动态调整 Tkinter Canvas 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18800860/