简体   繁体   English

循环时,如何在 Tkinter 的一个框架内将小部件打包在另一个之上?

[英]How to pack widgets inside a frame in Tkinter one above the another when looping?

I am looping through the main frame, and adding new frames with text inside it but it gets added to the bottom of the previous frame by default.我正在遍历主框架,并在其中添加带有文本的新框架,但默认情况下它被添加到前一框架的底部。

f3=Frame(wf).pack()

nf=Frame(f3, border=2, relief=SOLID)
nf.pack(pady=5, padx=80)
for i in l:
    text=Label(nf, text=i, pady=5)
    text.pack()

Here, I want the nf (new frames) to get added above the previous nf.在这里,我希望将 nf(新帧)添加到之前的 nf 之上。

Link to whole code: https://github.com/Tashyab/python-workshop/blob/master/Tkinter/newspaper.py链接到整个代码: https://github.com/Tashyab/python-workshop/blob/master/Tkinter/newspaper.py

You can use before option of .pack() .您可以使用.pack()before选项。

Below is an example:下面是一个例子:

f3 = Frame(wf)
f3.pack()

nf = None

def new_frame():
    global nf

    f = Frame(f3, bd=2, relief=SOLID)
    f.pack(before=nf, pady=5, padx=80) # pack before previous frame
    nf = f

    for i in l:
        Label(nf, text=i, pady=5).pack()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM