我想為 Python tkinter Notebook 中的選項卡設定單獨的顏色。我用這個草圖試過了,但它沒有按預期作業。
from tkinter import *
from tkinter import ttk
mygreen = "#d2ffd2"
myred = "#dd0202"
root = Tk()
tabsystem = ttk.Notebook(master=root)
text1=Text(tabsystem, state = DISABLED)
text2=Text(tabsystem, state = DISABLED)
text3=Text(tabsystem, state = DISABLED)
tabsystem.add(text1,text="Text 1")
ttk.Style().configure("TNotebook.Tab", background=myred)
tabsystem.add(text2,text="Text 2")
ttk.Style().configure("TNotebook.Tab", background=mygreen)
tabsystem.add(text3,text="Text 3")
ttk.Style().configure("TNotebook.Tab", background=myred)
tabsystem.grid(row=0)
mainloop()
如何對其進行編碼,以使選項卡“文本 2”顯示為綠色,選項卡“文本 1”和“文本 3”顯示為紅色?
提前感謝您的回答!
uj5u.com熱心網友回復:
這在風格上是不可能的。您正在做的ttk.Style().configure("TNotebook.Tab", background=myred)是全域更改所有筆記本的背景顏色,甚至是已經存在的筆記本。要執行您想要的操作,您需要能夠為不同的選項卡分配不同的樣式,這是不可能的,因為樣式是整個筆記本的屬性。當前選擇的選項卡只能有不同的顏色。
一種解決方法是在每個選項卡中使用影像而不是文本,但仍會保留一些邊框。這是一個使用 PIL 繪制標簽標簽的示例:
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageDraw, ImageTk, ImageFont
mygreen = "#d2ffd2"
myred = "#dd0202"
root = tk.Tk()
tabsystem = ttk.Notebook(master=root)
text1 = tk.Text(tabsystem, state=tk.DISABLED)
text2 = tk.Text(tabsystem, state=tk.DISABLED)
text3 = tk.Text(tabsystem, state=tk.DISABLED)
style = ttk.Style(root)
# remove the borders as much as possible
style.configure("TNotebook.Tab", padding=[0,0,0,0])
style.map("TNotebook.Tab", padding=[("selected", [0,0,0,0])])
# create the images for the tab labels
w, h = 54, 20
font = ImageFont.truetype("arial", size=14)
im1 = Image.new("RGB", (w, h), myred)
draw1 = ImageDraw.Draw(im1)
draw1.text((w//2, h//2), "Text 1", fill="black", anchor="mm", font=font)
tkim1 = ImageTk.PhotoImage(im1, master=root)
im2 = Image.new("RGB", (w, h), mygreen)
draw2 = ImageDraw.Draw(im2)
draw2.text((w//2, h//2), "Text 2", fill="black", anchor="mm", font=font)
tkim2 = ImageTk.PhotoImage(im2, master=root)
im3 = Image.new("RGB", (w, h), myred)
draw3 = ImageDraw.Draw(im3)
draw3.text((w//2, h//2), "Text 3", fill="black", anchor="mm", font=font)
tkim3 = ImageTk.PhotoImage(im3, master=root)
# create tabs
tabsystem.add(text1, image=tkim1)
tabsystem.add(text2, image=tkim2)
tabsystem.add(text3, image=tkim3)
tabsystem.grid(row=0)

uj5u.com熱心網友回復:
我就是這樣做的,小而美!
from tkinter import *
from tkinter import ttk
root = Tk()
tabsystem = ttk.Notebook(master=root)
text1=Text(tabsystem, state = DISABLED)
text2=Text(tabsystem, state = DISABLED)
text3=Text(tabsystem, state = DISABLED)
icon_green = PhotoImage(file='icon_green.png')
icon_red = PhotoImage(file='icon_red.png')
tabsystem.add(text1,text="Text 1", compound='right', image=icon_green)
tabsystem.add(text2,text="Text 2", compound='right', image=icon_red)
tabsystem.add(text3,text="Text 3", compound='right', image=icon_green)
tabsystem.grid(row=0)
mainloop()
感謝您的提示!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497220.html
下一篇:OR3比較的簡單方法?
