【问题标题】:Tkinter - Canvas Text not centeringTkinter - 画布文本不居中
【发布时间】:2022-01-06 07:47:35
【问题描述】:

希望你做得很好。我又遇到了另一个问题。所以我在画布上有一个文本,问题是它没有居中。我正在使用此代码 -

joke_text = canvas.create_text(
    0.0,
    0.0,
    anchor="w",
    justify='center',
    text=main.joke,
    fill="#000000",
    font=("Roboto Condensed", 39 * -1),

)

但它不是居中的,它总是在左边

请帮忙,抱歉英语不好,提前致谢!

【问题讨论】:

  • 当你使用 (0.0, 0.0) 时,为什么你期望它在中心?此外,由于您使用了anchor='w',因此我只能使用您的代码看到文本的下半部分。
  • Canvas 文本对象对象的justify 选项仅指定多行文本 如何相对于彼此定位 - 它与单行文本完全无关.您需要使用anchor='center',并结合实际位于画布中心而不是角落的坐标。

标签: python user-interface tkinter tkinter-canvas


【解决方案1】:

justify 选项指定多行文本会发生什么。您只有一行文本。它将显示在您提供的坐标的右侧。由于您的坐标为 0,0,因此它将出现在画布的左上角。

如果你想让文本居中,你需要给一个坐标,它是画布的中心,你需要将anchor设置为“c”(中心)。

import tkinter as tk

root = tk.Tk()
canvas = tk.Canvas(width=400, height=200, background="white")
canvas.pack(fill="both", expand=True)

canvas.create_text(200, 100, anchor="c", text="Hello, world", fill="#000000")

root.mainloop()

【讨论】:

  • 您好!很抱歉没有在问题中包含这个——即使我只有一行文本,它的长度取决于(随机文本)。所以坐标不会每次都是中心。您知道解决方案吗?谢谢。
  • @JKR:我不明白你的评论。如果您给出的坐标是小部件的中心,那么无论文本行多长,它仍然会居中。
猜你喜欢
  • 2015-04-29
  • 2021-03-15
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2023-03-21
相关资源
最近更新 更多