如何在PySimpleGUI中更改滚动条颜色(Dark主题示例)
修改PySimpleGUI Dark主题中Table组件的滚动条颜色
要把Dark主题里Table的绿色滚动条改成深灰色,核心是修改主题的滚动条配色参数,或者直接操作底层tkinter组件。下面给你两种易懂的实现方式:
方法一:自定义主题(推荐,全局生效)
直接基于Dark主题的配置创建新主题,替换滚动条相关的颜色值:
import PySimpleGUI as psg # 复制Dark主题的配置,修改滚动条颜色为深灰色(#333333) psg.theme_add_new('Dark-CustomScroll', { 'BACKGROUND': '#2B2B2B', 'TEXT': '#FFFFFF', 'INPUT': '#505050', 'TEXT_INPUT': '#FFFFFF', 'SCROLL': '#333333', # 滚动条滑块颜色 'BUTTON': ('#FFFFFF', '#474747'), 'PROGRESS': ('#01826B', '#D0D0D0'), 'BORDER': 1, 'SLIDER_DEPTH': 0, 'PROGRESS_DEPTH': 0, 'SCROLLBAR_BACKGROUND': '#2B2B2B', # 滚动条轨道背景色 'SCROLLBAR_COLOR': '#333333' # 滚动条滑块颜色 }) # 加载自定义主题 psg.theme('Dark-CustomScroll') psg.set_options(font=("Arial Bold", 14)) toprow = ['S.No.', 'Name', 'Age', 'Marks'] rows = [[1, 'Rajeev', 23, 78], [2, 'Rajani', 21, 66], [3, 'Rahul', 22, 60], [4, 'Robin', 20, 75]] tbl1 = psg.Table(values=rows, headings=toprow, auto_size_columns=True, display_row_numbers=False, justification='center', key='-TABLE-', selected_row_colors='red on yellow', enable_events=True, expand_x=True, expand_y=True, enable_click_events=True) layout = [[tbl1]] window = psg.Window("Table Demo", layout, size=(715, 200), resizable=True) while True: event, values = window.read() print("event:", event, "values:", values) if event == psg.WIN_CLOSED: break if '+CLICKED+' in event: psg.popup("你点击了行:{} 列: {}".format(event[2][0], event[2][1])) window.close()
关键说明:
SCROLL和SCROLLBAR_COLOR控制滚动条滑块的颜色,这里设为深灰色#333333,你可以根据需求调整成其他色值SCROLLBAR_BACKGROUND是滚动条轨道的背景色,和Dark主题的窗口背景#2B2B2B保持一致,视觉更统一
方法二:直接修改tkinter组件(仅针对单个Table)
如果只想修改当前Table的滚动条,不影响其他组件,可以直接获取Table对应的tkinter滚动条对象,修改其颜色:
import PySimpleGUI as psg psg.theme('Dark') psg.set_options(font=("Arial Bold", 14)) toprow = ['S.No.', 'Name', 'Age', 'Marks'] rows = [[1, 'Rajeev', 23, 78], [2, 'Rajani', 21, 66], [3, 'Rahul', 22, 60], [4, 'Robin', 20, 75]] tbl1 = psg.Table(values=rows, headings=toprow, auto_size_columns=True, display_row_numbers=False, justification='center', key='-TABLE-', selected_row_colors='red on yellow', enable_events=True, expand_x=True, expand_y=True, enable_click_events=True) layout = [[tbl1]] window = psg.Window("Table Demo", layout, size=(715, 200), resizable=True) # 获取Table的tkinter组件,修改滚动条颜色 table_widget = window['-TABLE-'].Widget # 修改垂直滚动条 v_scrollbar = table_widget.yview_scrollbar v_scrollbar.config(troughcolor='#2B2B2B', bg='#333333', activebackground='#333333') # 如果有水平滚动条,也可以修改 h_scrollbar = table_widget.xview_scrollbar h_scrollbar.config(troughcolor='#2B2B2B', bg='#333333', activebackground='#333333') while True: event, values = window.read() print("event:", event, "values:", values) if event == psg.WIN_CLOSED: break if '+CLICKED+' in event: psg.popup("你点击了行:{} 列: {}".format(event[2][0], event[2][1])) window.close()
关键说明:
- 通过
window['-TABLE-'].Widget获取Table的tkinter底层组件 - 用
config方法修改滚动条的troughcolor(轨道背景)、bg(滑块常态颜色)、activebackground(滑块点击时颜色)
内容的提问来源于stack exchange,提问作者Kankan2000
相关产品推荐
相关产品推荐

