【问题标题】:Working with indefinite number of canvas objects使用无限数量的画布对象
【发布时间】:2019-07-23 09:05:12
【问题描述】:

我正在尝试制作某种绘图工具,可以在 tkinter 上绘制预定义的形状,例如线条、框等。

问题1:我想添加重做-撤消按钮,这样当我撤消时,最后一个对象将被删除,重做时,最后一个对象将被添加。我以为我可以在创建时标记每个对象并将每个对象的标签存储在列表中,但我找不到合理的解决方案。

问题2:我如何才能添加最后删除的对象?如果我通过标签-撤消事件-删除,据我所知,数据将丢失。我猜我不应该丢失数据。

下面的伪代码示例:

line=create_line(...)
...
#tag should be assigned for further access
...
stack.append(tag)
...
#deleting by tag in undo event
undo(event): stack.pop()

#adding by tag in redo event
redo(event):
    stack.append(lasttag)
    #problem2: adding the last object

我不想画出所有的边框,但为了清楚起见,我添加了这些线条。建议的解决方案可以在更大、更灵活的环境中回答问题。提前致谢

【问题讨论】:

    标签: tkinter tags tkinter-canvas


    【解决方案1】:

    一个简单的解决方案是将已删除的项目移动到画布的不可见部分,而不是删除它们。然后,“重做”只是将它们移回。

    另一种选择是,当您删除某些内容时,您会保存其所有参数(坐标、颜色等),以便以后重新创建它们。

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 2017-11-25
      • 1970-01-01
      • 2012-03-17
      • 2013-03-29
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      相关资源
      最近更新 更多