gpt4 book ai didi

python - 为什么这个 Canvas 一个像素太大了?

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:18 25 4
gpt4 key购买 nike

MCVE

import Tkinter as tk

root = tk.Tk()
canvas = tk.Canvas(root, width=100, height=100)
canvas.grid(row=0, column=0)

def print_click(event):
print event.x, event.y

canvas.bind('<Button-1>', print_click)

root.mainloop()

问题

点击最左上角的 Canvas 打印 (0, 0)
单击右下角的 Canvas 会打印 (100, 100)。我期望 (99, 99)

这意味着 Canvas 实际上是 101 像素宽和高,而不是 100。

在我的真实程序中,我在 Canvas 上显示一个数组(作为图像)并且需要精确的点击位置。如果底层图像中不存在该位置(即 (100, 100) 对于 100x100 数组),程序将崩溃。

问题

  1. 我在创建 Canvas 时做错了什么吗?为什么它比预期的更宽更高?
  2. 这里的简单修复是在设置需要具有宽度 width 和高度的 Canvas 时从 widthheight 中减去 1 高度?

最佳答案

除了 widthheight 属性之外,还有其他因素会影响小部件的整体宽度和高度。例如,borderwidthhighlightthickness 都会影响小部件的整体大小。由于您没有将它们设置为零,因此您依赖于平台的默认值,而这些默认值显然不是零。

您需要明确地将这些属性设置为零:

canvas = tk.Canvas(root, width=100, height=100, highlightthickness=0, borderwidth=0)

关于python - 为什么这个 Canvas 一个像素太大了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com