【发布时间】:2017-09-30 18:48:15
【问题描述】:
我正在尝试创建小部件网格。这个小部件网格以标签开始,告诉我它们的坐标。然后,我有一个将替换它们的按钮的起点和终点列表。 假设我有一个从 (0, 0) 到 (0, 2) 的按钮,我从该位置删除标签并在那里放置一个具有正确行跨度的按钮。 如果一个按钮将替换另一个按钮(不仅仅是标签),我创建一个框架,然后我想克隆按钮作为更改父级的一种方式(我已经阅读过 tkinter 不可能)并添加框架的新按钮也是如此。然后框架将用并排而不是重叠的按钮替换网格上的小部件(标签和旧按钮)。
所以这个example image 显示了一个标签网格,然后是第一个按钮的放置位置,然后是第二个按钮的位置,以及两个按钮并排放置的结果框架。
对我来说最大的问题是必须删除第一个按钮并将其重新放置在网格上,因为无法更改小部件的父级。尽管我也欢迎在网格上并排放置按钮的更好想法。
【问题讨论】:
-
您无法更改小部件的父级,但您可以更改另一个小部件位于哪个小部件内部。这会解决你的问题吗?真的不清楚你的问题到底是什么。
-
@Bryan Oakley 如何更改另一个小部件位于哪个小部件中?现在我正在循环浏览整个窗口的 Frame.grid_slaves() (我在一个名为 info 的变量中对此进行描述)并利用它提供的信息来重新创建按钮。当我找到正确的 info["row"] 和 info["column"] 时,我正在使用此信息创建一个新按钮,但这只是有关此按钮如何放置在网格上的信息。不是像文本那样的按钮信息。
-
“如何更改另一个小部件位于哪个小部件中?” - 几何管理器都接受
in_参数来指定放置小部件的位置。直接来自文档的规则:“每个从属的主控必须是从属的父级(默认)或从属的父级的后代。” -
因此,如果我创建一个与我要克隆的 Button 具有相同父级的 Frame,我可以将按钮的
in_参数更改为包含在新 Frame 中,因为它的父级是也是 Button 的父级? -
试试看。
标签: python-3.x tkinter