如何删除Ttk Notebook Tab的虚线?(Tkinter)
在Python的GUI界面开发中,Tkinter是一个非常有名的模块,其提供了各种Widget供我们使用,其中Ttk Notebook就是一个常用的组件,可以用于实现Tab风格的界面。然而在使用Ttk Notebook时会发现,默认情况下选定Tab时会有一个虚线框
有些情况下,这个虚线框可能会显得不太美观,那么该如何去掉它呢?接下来将介绍两种方法供大家参考。
方法一
通过在Tkk Notebook实例化时添加选项卡参数borderwidth=0
来防止虚线框的出现,如下所示代码:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x300')
notebook = ttk.Notebook(root, borderwidth=0) # 添加选项卡参数
notebook.pack(fill='both', expand=True)
page1 = tk.Frame(notebook, bg='red', width=200, height=200)
notebook.add(page1, text='Page 1')
page2 = tk.Frame(notebook, bg='blue', width=200, height=200)
notebook.add(page2, text='Page 2')
root.mainloop()
运行上述代码,我们会发现虚线框已经消失了
虽然这种方式很简单,但是也存在一个缺点,即如果界面需要保留一定的边框,则Ttk Notebook也会受到影响而被“绑架”,这样就不仅仅会去掉虚线框,还会去掉选项卡的普通边框。
方法二
第二种方法比较巧妙,即在Tkk Notebook实例化时添加选项卡参数highlightthickness=0
来去掉虚线框,但同时保留普通边框。具体代码如下:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x300')
style = ttk.Style()
style.configure('TNotebook', borderwidth=0, highlightthickness=0)
style.configure('TNotebook.Tab', borderwidth=1)
notebook = ttk.Notebook(root, style='TNotebook')
notebook.pack(fill='both', expand=True)
page1 = tk.Frame(notebook, bg='red', width=200, height=200)
notebook.add(page1, text='Page 1')
page2 = tk.Frame(notebook, bg='blue', width=200, height=200)
notebook.add(page2, text='Page 2')
root.mainloop()
结论
经过上述两种方法的介绍,我们发现删除Ttk Notebook Tab的虚线是一件很简单的事情,只需要通过添加选项卡参数 borderwidth=0
或 highlightthickness=0
即可实现。但是也需要注意,在一些特殊的界面场合,第一种方法可能会与普通边框产生冲突,导致整个选项卡界面失去美感。因此,我们可以通过第二种方法在保留普通边框的前提下去掉虚线框。