Python - 了解 TKInter 帧

问题描述 投票:0回答:1

我正在尝试了解 Notebook 和 Frames 在 Python 中是如何工作的。

据我了解,如果我想要一个选项卡式界面,我会创建一个笔记本小部件并添加框架小部件。这是一个简单的工作示例:

import tkinter
from tkinter import ttk

#   Main Window
window = tkinter.Tk()

#   Notebook
notebook = ttk.Notebook(window)
notebook.pack(expand=True)

#   Frames
apple = ttk.Frame(notebook)
notebook.add(apple, text='Apple')
alabel = ttk.Label(apple, text='Apples')
alabel.pack()

banana = ttk.Frame(notebook)
notebook.add(banana, text='Banana')
blabel = ttk.Label(banana, text='Bananas')
blabel.pack()

tkinter.mainloop()

我能找到的任何文档都指出

Frame
小部件需要一个父级,即上面的
notebook
变量。然而:

  • 如果我将构造函数留空,它也可以工作。
  • 如果我稍后将其添加到框架中,似乎是多余的。

除了始终包含父级和示例的语法之外,我在互联网上找不到任何其他内容。问题是,

Frame
构造函数中的parent参数有什么意义?

Macintosh 上的 Python 3.12,如果有帮助的话。

python tkinter
1个回答
0
投票

Tkinter 有一个奇怪的功能,称为 default root,并且是某些代码环境中可怕错误的根源。

您可以在BaseWidget._setup

中看到

明确引用父级是一个很好的做法。不仅因为子级会与父级一起被破坏,而且有时对于绘图引擎来说也是必需的,以便子级保持父级的比例并且不会与任何边框重叠。

© www.soinside.com 2019 - 2024. All rights reserved.