如何删除Ttk Notebook Tab的虚线?(Tkinter)

如何删除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=0highlightthickness=0 即可实现。但是也需要注意,在一些特殊的界面场合,第一种方法可能会与普通边框产生冲突,导致整个选项卡界面失去美感。因此,我们可以通过第二种方法在保留普通边框的前提下去掉虚线框。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程