首页 > 解决方案 > 有没有办法使用 python 在 tkinter 中保留两个具有不同标签样式的笔记本?

问题描述

如果是标签或按钮,我知道它是如何完成的。

style=ttk.Style()
style.configure('One.TLabel', font=('Arial', 32))
style.configure('Two.TLabel', font=('Arial', 18))

h1=Label(root, text='Heading', style='One.TLabel')
h2=Label(root, text='Sub-heading', style='Two.TLabel')

h1.pack()
h2.pack()

这行得通。

但在笔记本标签的情况下,假设我想更改标签填充和字体。同样这个方法不起作用。

style=ttk.Style()
style.configure('One.TNotebook.Tab', font=('Arial', 14), padding=20)
style.configure('Two.TNotebook.Tab', font=('Arial', 12), padding=10)

# adding book1 tabs
book1=Notebook(root, style='One.TNotebook')
# adding book2 tabs
book2=Notebook(root, style='Two.TNotebook')

book1.pack()
book2.pack()

我们该怎么做呢?有解决办法吗?

标签: pythonpython-3.xtkintertabs

解决方案


对于笔记本,您可以使用ttk.Style(),如下所示,为同居在同一窗口中的两个不同笔记本定义两种不同的样式:

在此处输入图像描述

import tkinter as tk
from tkinter import ttk


root = tk.Tk()


style = ttk.Style()
style.configure('One.TNotebook.Tab', font=('Arial', 24), padding=40)

book1 = ttk.Notebook(root, style='One.TNotebook')
book1.pack()
frame1 = ttk.Frame(book1, width=400, height=200, relief=tk.SUNKEN)
frame2 = ttk.Frame(book1, width =400, height=200, relief=tk.SUNKEN)
book1.add(frame1, text = 'One')
book1.add(frame2, text = 'Two')


style.configure('Two.TNotebook.Tab', font=('Arial', 12), padding=10)

book2 = ttk.Notebook(root, style='Two.TNotebook')
book2.pack()
frame3 = ttk.Frame(book2, width=400, height=200, relief=tk.FLAT)
frame4 = ttk.Frame(book2, width =400, height=200, relief=tk.FLAT)
book2.add(frame3, text='Three')
book2.add(frame4, text='Four')


root.mainloop()

推荐阅读