alb*_*ert 3 python tk-toolkit canvas tkinter ttk
我通过调整这个例子并将它的移植到 Python3 ,将滚动条与 ttk notebook 结合起来。
我尽可能频繁地使用 ttk 小部件来获得更“现代”的用户界面。但是,没有 ttk 画布小部件,所以我使用了标准的 tkinter 画布。默认情况下,画布小部件的背景颜色似乎是白色(至少在 Mac OS 上),而所有 ttk 小部件的默认背景都是灰色(请参见下面的屏幕截图)。
如何获取包含标签小部件的 ttk 框架的默认背景,以便我可以将其传递到画布Canvas(parent, background='bg_color')
并删除包含 ttk 标签的 ttk 框架周围的空白区域?
我知道 ttk 用于styles
定义小部件的外观。但是,我不知道如何读取(默认)样式的背景值。
#!/usr/bin/env python3
# coding: utf-8
from tkinter import *
from tkinter import ttk
master = Tk()
def populate():
"""Put in some fake data"""
for row in range(100):
ttk.Label(frame, text="%s" % row, width=3, borderwidth="1", relief="solid").grid(row=row, column=0)
t="this is the second column for row %s" % row
ttk.Label(frame, text=t).grid(row=row, column=1)
def OnFrameConfigure(event):
"""Reset the scroll region to encompass the inner frame"""
canvas.configure(scrollregion=canvas.bbox("all"))
nbook = ttk.Notebook(master)
nbook.grid()
tab = Frame(nbook)
canvas = Canvas(tab, borderwidth=0)
frame = ttk.Frame(canvas)
vsb = Scrollbar(tab, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)
vsb.pack(side="right", fill="y")
canvas.pack(side='left', fill='both', expand=True)
canvas.create_window((0, 0), window=frame, anchor='nw', tags='frame')
frame.bind("<Configure>", OnFrameConfigure)
populate()
nbook.add(tab, text='Test')
master.mainloop()
Run Code Online (Sandbox Code Playgroud)
您可以使用s.lookup()
来获取样式的设置。如果您想要 ttk Frame 的背景设置,请使用:
s = ttk.Style()
bg = s.lookup('TFrame', 'background')
Run Code Online (Sandbox Code Playgroud)
您可以将其应用于 Canvas:
canvas = Canvas(tab, borderwidth=0, background=bg)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3856 次 |
最近记录: |