tkinter 框架边框不显示

Ove*_*ivr 2 python tkinter

我希望显示包含多个小部件的框架的边框,但是尽管将宽度设置为边框并将 SUNKEN 值设置为浮雕,但没有显示边框

它在空框架上工作得很好,所以我猜它不适用于有孩子的框架,这是正确的吗?

我怎么能做到呢?或者至少在我的界面的两个区域之间引入分离

测试代码:

import tkinter as Tk

class Application(Tk.Frame):

    def __init__(self, **kwargs):
        #Create window
        self.root = Tk.Tk()

        #Init master frame
        Tk.Frame.__init__(self,self.root,width=640, height=480)
        self.grid()

        #Frame
        self.frame_com_ports = COM_Frame(self,borderwidth=5,relief=Tk.GROOVE)
        self.frame_com_ports.grid(column=0,row=0,sticky='EW')

        #Some other frames here...

class COM_Frame(Tk.Frame):
    def __init__(self,parent, **kwargs):
        Tk.Frame.__init__(self,parent)

        #Widgets
        self.txt_ports = Tk.Label(self,text="WIDGET1")
        self.txt_ports.grid(column=0,row=0,sticky='EW',pady=3,padx=3)

        self.txt_ports = Tk.Label(self,text="WIDGET2")
        self.txt_ports.grid(column=0,row=1,sticky='EW',pady=3,padx=3)

if __name__ == "__main__":
    app = Application()
    app.mainloop()
Run Code Online (Sandbox Code Playgroud)

小智 5

框架的默认浮雕是 tk.FLAT,这意味着框架将与周围环境融为一体。要在框架周围放置边框,请将其边框宽度设置为正值,并将其浮雕设置为标准浮雕类型之一。


Bry*_*ley 5

您将边框宽度和浮雕传递给 COM_Frame 构造函数,但在调用 Frame 构造函数时没有使用这些值。你需要改变这个:

Tk.Frame.__init__(self,parent)
Run Code Online (Sandbox Code Playgroud)

...对此:

Tk.Frame.__init__(self,parent, **kwargs)
Run Code Online (Sandbox Code Playgroud)