【问题标题】:Python tkinter movePython tkinter 移动
【发布时间】:2014-01-04 16:52:56
【问题描述】:

我在图表上有许多线条、数据线、水平分隔线、日月指示线等。我通常(可能直到现在)一直以这种方式添加线条:

canvas_1.create_line(x1,y1,x2,y2)

我现在有一个简单的问题。我还想添加一个垂直刻度以显示该线在零上方和下方多少……非常自然。数据文件很大,大约有 12,000 个数据单元并且还在增长,所以我使用左右箭头键进行了所有设置,以便滚动数据。它效果很好,但我还没有添加垂直比例。现在一切都在移动:

canvas_1.move(ALL,x,y)

当我添加垂直比例时,我不希望垂直比例移动。我知道通过使用 move(ALL) 垂直刻度也会移动。

为了使垂直刻度不会移动,我必须进行哪些更改?我必须出去“标记”所有 create_line 语句吗???

line1 = canvas_1.create_line....

如果是这样,当我对要移动的行有大量引用时,如何将它们放入 move 语句中。我必须将所有标签放入列表中还是什么?我真的有点迷失在这个概念的思考过程中。

我承认我仍在研究滚动条,但还没有很好的运气,我觉得我仍然有同样的问题需要处理。

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    move 方法采用单个对象的 id 或表示零个或多个对象的标记。 ALL 是一个内置标签(字面意思是字符串"all"),它引用画布上的所有内容。

    因此,要在不移动刻度的情况下使用move 方法,请给除刻度以外的所有内容一个唯一标签,然后将该标签用于move 命令。

    canvas_1.create_line(x1,y1,x2,y2, tags=("lines",))
    ...
    canvas_1.move("lines")
    

    有关标签的更多信息,请参阅http://effbot.org/tkinterbook/canvas.htm#item-specifiers

    【讨论】:

    • 每个 move 语句是否可以使用多个标签,或者这会触发您进入 move 语句的 x、y 吗?我现在在 Windows 上,它没有安装 python,所以我现在无法测试......对不起。
    • @confused:文档声明它只需要一个标签。 tkinter 文档没有显示,但 tcl/tk 文档所做的(tkinter 所基于的 - 请参阅tcl.tk/man/tcl8.5/TkCmd/canvas.htm#M8)是您可以指定逻辑表达式,例如“(tag1||tag2)”。所以,是的,您可以指定多个标签。
    猜你喜欢
    • 1970-01-01
    • 2021-02-02
    • 2021-12-02
    • 2018-09-04
    • 2019-05-07
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多