使用网格(tkinter)时,标签超出嵌套框架

时间:2019-04-09 14:14:25

标签: python tkinter

这只是一个简单的问题,但是当您使用粘滞标签时,标签是否不应该留在嵌套框架的内部?在我的代码中,它仅停留在父框架中。如果正常,您有解决办法吗?

我尝试查找文档,但是没有找到任何可以帮助的东西。

from tkinter import *
from tkinter import ttk

root = Tk()
root.title("Tk test")
root.geometry("800x800")

frame_1 = ttk.Frame(root, relief="sunken", height="400", width="400").grid(row=0, column=0, rowspan=1, columnspan=1)
frame_2 = ttk.Frame(frame_1, relief="sunken", height="200", width="200").grid(row=0, column=0, rowspan=1, columnspan=1)
label_1 = ttk.Label(frame_2, text="Text").grid(row=0, column=0, sticky="N, E")

root.mainloop()

预期结果:标签停留在嵌套在父框架内的框架内。 实际结果:它只停留在父框架内

2 个答案:

答案 0 :(得分:1)

def kadane(arr): if not arr: return [] # corner case maxi = wini = maxj = 0 maxseen = 0 winmax = 0 # max sum of window ends at winj for winj in range(len(arr)): if winmax + arr[winj] < arr[winj]: winmax = arr[winj] wini = winj else: winmax += arr[winj] if winmax > maxseen: maxi = wini maxj = winj return arr[maxi:maxj+1] 函数返回.grid(...)。因此,当您这样做

None

您将frame_1 = ttk.Frame(root, relief="sunken", height="400", width="400").grid(row=0, column=0, rowspan=1, columnspan=1) 分配给Noneframe_1frame_2也是如此。

由于label_1,呼叫frame_1 == None实际上与ttk.Frame(frame_1, ...)相同。因此,您没有传递母版,而母版默认为将根窗口作为母版。同样,创建ttk.Frame(None, ...)也是如此。

解决方法是将小部件的创建和放置划分为两行:

label_1

答案 1 :(得分:-2)

在定义frame_1,frame_2和label_1的每一行的末尾添加.pack()