tkinter帧边框未显示

2024-04-26 11:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望显示一个包含几个小部件的框架的边框,但是尽管设置了边框的宽度和凹陷值以释放,但是没有边框显示出来

它在一个空的框架上工作得很好,所以我猜它在一个有孩子的框架上不工作,对吗?

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

测试代码:

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()

Tags: selftxt框架initcolumnportsframetk
3条回答

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

您正在将borderwidth和relief传递给COM_Frame构造函数,但在调用Frame构造函数时不使用这些值。您需要更改:

Tk.Frame.__init__(self,parent)

。。。对此:

Tk.Frame.__init__(self,parent, **kwargs)
my_frame.config(bd=1, relief=tkinter.SOLID)

相关问题 更多 >