【发布时间】:2015-04-07 04:12:02
【问题描述】:
我想知道您是否可以帮助我解决 ttk 中的样式选项问题。我已经设法将大多数基本的 ttk 小部件更改为我喜欢的样式。我只停留在更改滚动条的样式。我已经搜索了几个小时寻找答案,不幸的是无济于事。
这是使用滚动条样式选项的示例代码:
import tkinter as tk
from tkinter import ttk
class Gui:
def __init__(self,mainframe):
#set the style
style = ttk.Style()
style.configure('Horizontal.TScrollbar',background = "blue" )
#Create a mainframe
self.mainframe = mainframe
self.mainframe.title("example")
#creating scrollbar frame
scrl_attr_frame = ttk.Frame(self.mainframe)
scrl_attr_frame.grid(column=0,row=5,sticky="ns")
scrl_attr_frame.rowconfigure(0, weight=1)
attr_canvas = tk.Canvas(scrl_attr_frame)
h_scroll = ttk.Scrollbar(scrl_attr_frame,orient="horizontal", command=attr_canvas.xview)
attr_canvas.configure(xscrollcommand=h_scroll.set)
attr_canvas.grid(column=0,row=0,sticky="ns")
h_scroll.grid(column=0, row=1,sticky="we")
attr_frame = ttk.Frame(attr_canvas)
attr_frame.grid(column=0,row=0,sticky="ns")
attr_canvas.create_window((0,0),window=attr_frame, anchor='nw')
attr_frame.bind("<Configure>",lambda event, canvas=attr_canvas : canvas.configure(scrollregion=canvas.bbox("all"),width=200,height=200,takefocus=False,highlightthickness=0))#attribute_frame.winfo_height()/20,highlightthickness=0))
#setup treeview widget
tree_columns = ("c1", "c2", "c3")
self.tree = ttk.Treeview(attr_frame,columns=tree_columns, show="headings",takefocus=False)
self.tree.grid(column=0, row=0, sticky='nsew')
for head in tree_columns:
self.tree.heading(head,text=head,anchor="w")
root = tk.Tk()
myapp = Gui(root)
root.mainloop()
我还尝试了几种组合,包括:
style.configure('TScrollbar',background='blue')
#and
style.configure('CustomScroll.Horizontal.TScrollbar',background='blue')
#in combination with
h_scroll = ttk.Scrollbar(scrl_attr_frame,orient="horizontal", command=attr_canvas.xview)
h_scroll['style'] = "CustomScroll.Horizontal.TScrollbar"
非常感谢您的帮助!
【问题讨论】:
-
如果有人创建东西时也提供完整的文档和示例,那就太好了,否则什么都不做会更有效率。
-
什么平台?某些平台上的某些原生小部件无法更改。
-
@StephanL 我想你在 Mac 上,你甚至看不到水平滚动条......
-
我正在使用 Windows 7。感谢您的宝贵时间!
-
太棒了!感谢您的时间和精力。无论结果如何,我都感谢您的帮助。
标签: python tkinter styles scrollbar ttk