【问题标题】:Tkinter coordinates start at 3?Tkinter 坐标从 3 开始?
【发布时间】:2010-09-30 23:49:32
【问题描述】:

我有以下代码:

from Tkinter import *

master = Tk()
canvas = Canvas(master, width=640, height=480, bd=0)
canvas.pack()

line_coords = (3, 3, 3, 100)
canvas.create_line(*line_coords, fill='red')

mainloop()

这将在左上角画一条线。为什么如果我将 line_coords 更改为 (2, 2, 2, 100) 线不会渲染?好像坐标系从 (3, 3) 开始。

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    画布坐标明确地从零开始,窗口框架与您的问题无关。

    问题是系统上画布的默认高亮厚度是 3,这就是遮蔽线条的原因。尝试将 highlightthickness 设置为零,即使 x 坐标为 0,您也会看到您的线条。

    不幸的是,borderwidth 和 highlightthickness 都侵犯了画布的坐标系。

    【讨论】:

    • 是的,你是对的。将 highlightthickness 设置为 0 解决了这个问题。谢谢!
    【解决方案2】:

    坐标系可能从左上角开始包括操作系统的标题栏和边框,所以你必须向右和向下渲染一点。

    这通常取决于操作系统。

    【讨论】:

    • 有没有办法让 tkinter 根据需要自动翻译坐标?或者我是否可以至少以编程方式确定偏移量以自己进行翻译?
    • 对此不确定,因为它是特定于操作系统的,但如果您知道您只会在一个操作系统上使用该程序,您可以随时创建自己的函数。
    • 这个答案是完全错误的。
    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2018-06-24
    • 1970-01-01
    • 2016-07-06
    相关资源
    最近更新 更多