在Tkinter Python 3中添加子帧

在Tkinter Python 3中添加子帧,python,python-3.x,oop,tkinter,Python,Python 3.x,Oop,Tkinter,我正在尝试向主框架小部件动态添加子框架。子框架是带有按钮的列,我为子框架创建了一个单独的类,以便将子框架作为列表中的对象,以便以后可以对其进行更改。实际上,额外列的数量也取决于用户输入 我首先使用网格管理器向主框架添加小部件,然后使用网格向子框架添加按钮。我希望grid在不同的框架中使用时能够实现,但子框架类中的grid调用似乎将小部件直接放置在主框架中,而不是仅放置在子框架中 代码: 作为记录:我在App类中显示主框架的方式取自pythonprogramming.net上的教程,也用于我的真实

我正在尝试向主框架小部件动态添加子框架。子框架是带有按钮的列,我为子框架创建了一个单独的类,以便将子框架作为列表中的对象,以便以后可以对其进行更改。实际上,额外列的数量也取决于用户输入

我首先使用网格管理器向主框架添加小部件,然后使用网格向子框架添加按钮。我希望grid在不同的框架中使用时能够实现,但子框架类中的grid调用似乎将小部件直接放置在主框架中,而不是仅放置在子框架中

代码:

作为记录:我在App类中显示主框架的方式取自pythonprogramming.net上的教程,也用于我的真实代码中

谢谢

如中所述,在创建widgetframe、button、label等对象时,除非显式地将frame对象作为父对象传递,否则根窗口假定为父对象

如果要在帧的基础上管理几何体,则需要将小部件的父对象指定为该帧

检查以下代码:

import tkinter as tk

#creates a window object named root, this object is the default parent for ever widget object
root = tk.Tk()

#creates a frame that is a child of object named 'root'
mainFrame = tk.Frame(master=root)

#creates a frame that is a child of 'mainFrame'
subFrame_mainFrame = tk.Frame(mainFrame)

#creates a button that is a child of 'subFrame'
button_subFrame_mainFrame_root = tk.Button(master=subFrame)

#creates a button that is a child of default, which is 'root' in this case
button_root = tk.Button()

#creates a button that is a child of mainFrame
button_mainFrame = tk.Button(mainFrame)
您可以独立于主窗口或其他任何内容管理框架内容的几何图形,前提是您已将框架的子项正确指定给它作为父项


这是一个模块化管理几何图形的示例。

您知道Label、Button等的第一个参数是应该包含标签或按钮的父窗口或框架吗?谢谢,添加master=。。。我所有的网格任务解决了我的问题!感谢您提供的详细示例,我将master=self作为参数添加到每个网格调用中,所有子项都正确对齐@CelThys作为参考,您实际上不需要说master=,因为每个小部件的第一个参数都假定为小部件的父级或主级。只是说按钮租金,文本=。。。。。。。。这已经足够好了。
import tkinter as tk

#creates a window object named root, this object is the default parent for ever widget object
root = tk.Tk()

#creates a frame that is a child of object named 'root'
mainFrame = tk.Frame(master=root)

#creates a frame that is a child of 'mainFrame'
subFrame_mainFrame = tk.Frame(mainFrame)

#creates a button that is a child of 'subFrame'
button_subFrame_mainFrame_root = tk.Button(master=subFrame)

#creates a button that is a child of default, which is 'root' in this case
button_root = tk.Button()

#creates a button that is a child of mainFrame
button_mainFrame = tk.Button(mainFrame)