首页 文章

有没有办法克隆tkinter小部件?

提问于
浏览
1

我正在尝试创建小部件网格 . 这个小部件网格以标签告诉我他们的坐标开始 . 然后我有一个替换它们的按钮的起点和终点列表 . 假设我有一个从(0,0)到(0,2)的按钮,我从这个位置删除标签,并在那里放一个正确的rowspan按钮 . 如果一个按钮将替换另一个按钮(而不仅仅是一个标签),我创建一个框架,然后我想克隆该按钮作为一种更改父级的方式(我已经读过不可能使用tkinter)并添加框架的新按钮也是如此 . 然后,框架将使用按钮并排替换网格上的小部件(标签和旧按钮),而不是重叠 .

所以example image显示标签网格,然后放置第一个按钮,然后第二个按钮应该放在哪里,结果框架中并排有两个按钮 .

对我来说最大的问题是必须删除第一个按钮并将其重新放置在网格上,因为无法更改小部件的父级 . 虽然我也欢迎在网格上并排获得按钮的更好的想法 .

1 回答

  • 1

    没有直接的方法来克隆窗口小部件,但是tkinter为您提供了一种方法来确定窗口小部件的父级,窗口小部件的类以及窗口小部件的所有配置值 . 此信息足以创建副本 .

    它看起来像这样:

    def clone(widget):
        parent = widget.nametowidget(widget.winfo_parent())
        cls = widget.__class__
    
        clone = cls(parent)
        for key in widget.configure():
            clone.configure({key: widget.cget(key)})
        return clone
    

相关问题