在 tkinter 中管理框架

manage frames in tkinter

也许这是微不足道的,但我无法理解它。我想用 frames 制作一个由

组成的 gui

我已经试过了,但我想不通

import tkinter as tk
from tkinter import ttk


# -----function definition--------------------------------

# define a variable entry
def create_input_field(container, label_set):
    r = 0
    out = []
    for label in label_set:
        ttk.Label(text=label, relief=tk.RIDGE, width=15).grid(row=r, column=0)  # sticky=tk.W)
        var = ttk.Entry(text=label, textvariable=label, width=10).grid(row=r, column=1)
        out.append(var)
        r = r + 1
    return out


# define radio button for output
def create_radio_button_analysis(container):
    selected_size = tk.StringVar()
    sizes = (('uniform', 'u'),
             ('non uniform', 'nu'))

    label = ttk.Label(text="type of analysis")
    # label.pack(fill='x', padx=5, pady=5)
    for size in sizes:
        r = ttk.Radiobutton(container, text=size[0], value=size[1], variable=selected_size)
        r.grid(row=1, column=0)


if __name__ == "__main__":
    # define main window
    root = tk.Tk()
    root.title('Name window')

    frame = ttk.Frame(root)
    frame.rowconfigure(0, weight=1)
    frame.rowconfigure(0, weight=1)
    frame.rowconfigure(0, weight=1)

    # input variables
    variables = ['var_1 (unit of measure)', 'var_2 (unit of measure)', 'var_3 (unit of measure)']
    create_input_field(root, variables)

    create_radio_button_analysis(root)

    root.mainloop()

以下是使用 .pack() 布局管理器即可完成此操作的方法:

from tkinter import Tk, Frame, Radiobutton, Entry


root = Tk()

frame_top = Frame(root)
frame_middle = Frame(root)
frame_bottom = Frame(root)

frame_top.pack()
frame_middle.pack()
frame_bottom.pack()

Radiobutton(frame_top, text='Radio 1 top').pack()
Radiobutton(frame_top, text='Radio 2 top').pack()

entry_lst = []
for _ in range(5):
    e = Entry(frame_middle)
    e.pack()
    entry_lst.append(e)

Radiobutton(frame_bottom, text='Radio 1 bottom').pack()
Radiobutton(frame_bottom, text='Radio 2 bottom').pack()

root.mainloop()