是否有一种简单的方法来使嵌套框架看起来像一帧-最好使用网格布局管理器?当框架不嵌套时(相对于框架是相同父窗口小部件的子级,请参见第二张图片),这相对容易实现。
问题是(1像素?)分离出现在
框架。消除这种情况,我的问题就消失了。
在第一个图像中,三个垂直线(嵌套框架的边缘边界)需要显示为一条线(相同的情况适用于图像底部的水平线)。期望的结果是一个包含3个(子)帧的(父)帧-第二个图像。
顺便说一句,所有三个子框架都实现为框架,而不是按钮小部件。
我尝试使用“ padx”(零和负数),“救济”(设置为FLAT等)和borderwidth(设置为0和-1)窗口小部件属性没有成功。
我不愿意重新设计应用程序(使用Canvas和/或ttk.Separator)只是为了解决这个小而烦人的问题。消除嵌套不是一种可以接受的方法(除非绝对没有其他方法)。
有什么建议吗?
答案 0 :(得分:1)
将内部框架的边界宽度设置为零,然后用ttk.Separator
分隔它们,即可获得想要的外观。
产生以上图像的代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry("250x200")
outer_frame = tk.Frame(root, borderwidth=2, relief="groove")
outer_frame.pack(side="top", fill="both", expand=True, padx=20, pady=20)
f1 = tk.Frame(outer_frame, borderwidth=0, highlightthickness=0)
f2 = tk.Frame(outer_frame, borderwidth=0, highlightthickness=0)
f3 = tk.Frame(outer_frame, borderwidth=0, highlightthickness=0)
tk.Label(f1, text="Child Frame 1").pack(fill="both", expand=True)
tk.Label(f2, text="Child Frame 2").pack(fill="both", expand=True)
tk.Label(f3, text="Child Frame 3").pack(fill="both", expand=True)
s1 = ttk.Separator(outer_frame, orient="horizontal")
s2 = ttk.Separator(outer_frame, orient="horizontal")
f1.pack(side="top", fill="both", expand=True)
s1.pack(side="top", fill="x", expand=False)
f2.pack(side="top", fill="both", expand=True)
s2.pack(side="top", fill="x", expand=False)
f3.pack(side="top", fill="both", expand=True)
root.mainloop()