【问题标题】:How to reconfigure tkinter canvas items?如何重新配置​​ tkinter 画布项目?
【发布时间】:2012-10-24 02:52:18
【问题描述】:

我不知道这个问题是否有重复,但我还没有找到。

在使用 python 时,您可以快速创建 GUI,但有时您无法找到一种方法来做您想做的事。例如我有以下问题:

假设有一个名为 K 的画布,其中有一个 ID=1(画布项 id,不是内存 id)的矩形。

如果我想重绘项目,我可以删除它,然后用新设置重绘它。

K.delete(1)
K.create_rectangle(x1,y1,x2,y2,options...)

问题来了:对象id改变了;我怎样才能重绘、移动或调整矩形的大小,或者简单地改变它而不用方法改变它的id?例如:

K.foo(1,options....)

如果没有这样的方法,那么我应该创建一个带有画布对象 ids 的列表,但它不优雅也不快速。例如:

ItemIds=[None,None,etc...]
ItemIds[0]=K.create_rectangle(old options...)
K.delete(ItemIds[0])
ItemIds[0]=K.create_rectangle(new options...)

【问题讨论】:

    标签: python user-interface tkinter


    【解决方案1】:

    你可以使用Canvas.itemconfig:

    item = K.create_rectangle(x1,y1,x2,y2,options...)
    K.itemconfig(item,options)
    

    要移动项目,您可以使用Canvas.move


    import Tkinter as tk
    
    root = tk.Tk()
    canvas = tk.Canvas(root)
    canvas.pack()
    item = canvas.create_rectangle(50, 25, 150, 75, fill="blue")
    
    def callback():
        canvas.itemconfig(item,fill='red')
    
    button = tk.Button(root,text='Push me!',command=callback)
    button.pack()
    
    root.mainloop()
    

    【讨论】:

    【解决方案2】:

    我四处搜索,找到了调整大小的完美 Tkinter 方法。 canvas.coords() 可以解决问题。只需给它你的新坐标,它就“很好”。 Python 3.4
    PS。不要忘记第一个参数是 id。

    【讨论】:

    • 请详细解释你的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多