无法在顶层风中创建帧

2024-04-18 22:21:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个根窗口和一个顶层窗口,我想把东西放在顶层窗口的一个框架中。但是,框架(而不是其中的标签)将显示在根窗口中。你知道吗

窗口截图。你知道吗

Screen Shot

from tkinter import *

root = Tk()

Label(root, text="label1").pack()

newWindow = Toplevel(root)

Label(newWindow, text="label2").pack()
frame2 = Frame(newWindow).pack()
Label(frame2, text="framelabel2").pack()

root.mainloop()

Tags: textfromimport框架tkinterroot标签label
2条回答

在这种情况下,您不需要两个帧,只需使用grid来对齐标签: columnrow格式也使其更易于阅读&您还可以使用其他选项,如padxpadysticky,以提高设计的灵活性。你知道吗

import tkinter as tk

root = tk.Tk()
frame = tk.Frame(root)
frame.grid()
root.title("Tkinter Window")  # Replace with anything else you want
label1 = tk.Label(root, text="Label1").grid(column=0,row=0)
label2= tk.Label(root,text="Label2").grid(column=0,row=1)
root.mainloop()

您可以进一步了解gridhere。你知道吗

您需要将frame2打包到如下新行:

from tkinter import *

root = Tk()

Label(root, text="label1").pack()

newWindow = Toplevel(root)

Label(newWindow, text="label2").pack()
frame2 = Frame(newWindow)
frame2.pack() # pack frame2 on new line here.
Label(frame2, text="framelabel2").pack()

root.mainloop()

framelabel2标签放在根窗口上的原因是frame2being==to None,因为pack()返回None。因为您试图将小部件打包到None,所以kinter将该小部件默认为根窗口,以尝试将该小部件放置在某个地方。你知道吗

简单的解决方法是确保在定义框架或任何容器时总是在新行上执行pack()grid()place()。你知道吗

相关问题 更多 >