小部件覆盖其框架的背景

Widgets overriding their frame's background

当我创建一个框架并为其设置背景颜色时,颜色显示得很好。但是,当我将小部件添加到框架时,背景颜色消失了。我已经尝试将相同的颜色设置为小部件的背景,但框架中仍然有很多白点。

这是不起作用的代码块:

    DAC_frame = Frame(self, width=180, height=240, bg="red")
    DAC_frame.pack(side=RIGHT)

    DAC_delete_label = Label(DAC_frame, text="Delete A Term:", bg="red")
    DAC_delete_label.pack(fill=X)

    DAC_delete_entry = Entry(DAC_frame)
    DAC_delete_entry.pack()

    DAC_delete = Button(DAC_frame, text="Delete Term")
    DAC_delete.pack()

    DAC_clear = Button(DAC_frame, text="Clear Dictionary")
    DAC_clear.pack()

您无法在 Tkinter 中设置透明颜色,这就是您 Frame 的背景消失的原因。所以 "white spots" 只是您的小部件的背景。您现在有两个选择:

  1. 使用 Canvas here is a example
  2. 创建您自己的小部件
  3. 为每个小部件设置相同的背景颜色,对于按钮,您可以将 borderwidth 设置为 0。

    from Tkconstants import RIGHT, X
    from Tkinter import Frame, Tk, Label, Entry, Button
    import Tkinter
    
    
    class App(Tk):
    
        def __init__(self):
            Tkinter.Tk.__init__(self)
            DAC_frame = Frame(self, width=180, height=240, bg="red")
            DAC_frame.pack(side=RIGHT)
    
            DAC_delete_label = Label(DAC_frame, text="Delete A Term:", bg="red")
            DAC_delete_label.pack(fill=X)
    
            DAC_delete_entry = Entry(DAC_frame)
            DAC_delete_entry.pack()
    
            DAC_delete = Button(DAC_frame, text="Delete Term",borderwidth=0, bg="red", activebackground="red")
            DAC_delete.pack()
    
            DAC_clear = Button(DAC_frame, text="Clear Dictionary",borderwidth=0, bg="red", activebackground="red")
            DAC_clear.pack()
    
    ap = App()
    ap.mainloop()