【问题标题】:python tkinter canvas create_line function returns values?python tkinter canvas create_line 函数返回值?
【发布时间】:2021-07-10 06:47:43
【问题描述】:

我最近在 python 交互模式下遇到了一些返回值(我从未在脚本模式下获得 create_line 函数的返回值,如果在交互模式下测试单独的行,我会得到返回值,但该函数不会像我预期的那样创建行) .我想知道这些是什么意思,为什么这条线没有被创建。以下是我目前遇到的几个:

>>> canvas.create_line(134,100,134,400)
1
>>> 

我也得到了这些返回值

>>> def shape():
    canvas.create_line(134,100,134,400)
    canvas.create_line(134,400,234,400)
    canvas.create_line(234,100,234,400)
    canvas.create_line(234,100,134,100)

    
>>> shape()
>>> canvas.create_line(134,100,134,400)
5
>>> canvas.create_line(134,400,234,400)
6
>>> canvas.create_line(234,100,234,400)
7
>>> canvas.create_line(234,100,134,100)
8
>>> 

在这段代码中,当我调用shape 函数时,它没有创建行。单独调用这些行给了我这些返回值,奇怪的是这些值是如何从 5 开始,然后连续到 8 的。有人可以告诉这是一个错误还是这些数字有意义?

【问题讨论】:

    标签: python tkinter canvas


    【解决方案1】:

    当您说canvas.create_line() 时,它会返回创建的画布对象的Id,以后可用于修改或获取属性等。

    这里有一些关于create_arc() 的信息,因为我找不到任何关于create_line() 的官方信息:

    构造函数返回画布上新弧对象的对象ID。

    从你的例子来看,似乎只有 create_line()create_image() 返回整数 id,其余的给出一个对象 id。

    例如:

    obj = canvas.create_line(134,100,134,400)
    canvas.itemconfig(obj, width=10)
    

    Canvas 方法采用tagorId,因此您始终可以只使用一个选项tag='line1',然后稍后再调用它,例如:

    obj = canvas.create_line(134,100,134,400,tag='line1')
    canvas.itemconfig('line1', width=10)
    

    在这段代码中,当我调用 shape 函数时,它并没有创建线条。

    您确定画布坐标正确吗?它从画布的 0,0 开始,尝试更改坐标并配置适用于您的画布的内容。

    【讨论】:

    • thx,你的建议奏效了,我不知道 tkinter 不会自动调整坐标。这次是在最大化和设置画布坐标相同时获得了根几何体,它起作用了。非常感谢
    猜你喜欢
    • 2012-10-17
    • 2019-02-12
    • 1970-01-01
    • 2019-03-18
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多