为什么我添加较小的小部件时我的个性化框架没有保留

Why does my personnalized frame doesn't stay when I add a smaller widget

考虑 tkinter 在 python 3.5.

中使用 Tk 8.6

注意:在下面的代码中,s 指的是 ttk.Style.

的一个实例

我有一个我制作的风格的相框。它工作正常。我将它的大小设置为 562x750,因为它是图像大小。没有错。如果需要,这里是代码:

s.mainframeImage = tk.PhotoImage(file = os.path.join(IMG_DIR, "base_img", "SWTORLogo.png"))
s.element_create("mainframe.background", "image", s.mainframeImage, sticky = "nswe", height = 562, width = 750)
s.layout("mainframe.TFrame", [("Frame.border", {"sticky": "nswe", "children": [("mainframe.background",
            {"sticky": "nswe"})]})])

如果需要的话,这是我制作的组合框样式。我只换了背景(Combobox.field).

s.topComboboxImage = tk.PhotoImage(file = os.path.join(IMG_DIR, "base_img", "combobox_top.png"))
s.element_create("topCombobox.field", "image", s.topComboboxImage, sticky = "nswe", height = 65, width = 750)
s.layout("topCombobox.TCombobox", [("topCombobox.field", {"children": [("Combobox.downarrow",
            {"side": "right", "sticky": "ns"}), ("Combobox.padding", {"children": [("Combobox.textarea",
            {"sticky": "nswe"})], "expand": "1", "sticky": "nswe"})], "sticky": "nswe"})])

所以...假设上面的代码已实例化..让它们出现在 window 中应该没有问题。只要我不使用框架作为组合框的父级,一切都会出现。 当我这样做时,问题就开始了。 这是我使用的代码:

myApp = tk.Tk()
getStyle(myApp)
myApp.me = ttk.Frame(myApp, style = "mainframe.TFrame", height = 562, width = 750)
myApp.me.grid(sticky = "nswe")
myApp.me.me2 = ttk.Combobox(myApp.me, style = "topCombobox.TCombobox")
myApp.me.me2.grid(column = 1, row = 1)

getStyle(myApp) 是我用来命令创建主题的函数。

所以问题是:当我将它作为父项提供给组合框时,为什么框架消失了?组合框应该更小。

在到处寻找之后.. 似乎 Tk 无法阻止小部件隐藏它们背后的东西。嗯,除非你使用 Canvas.