python - Tkinter ttk:背景/前景色在我的电脑上不起作用
问题描述
如果我在 Windows 10 和 7 上通过 IDLE 或 pycharm 中的虚拟环境运行此代码:
import tkinter as tk
from tkinter import ttk
x = tk.Tk()
y = ttk.Treeview(x)
y.insert('',0,values=['red', 'blue'], tags= ('even',))
y['columns'] = ('color1','color2')
for item in y['columns']:
y.heading(item, text=item)
y.tag_configure('even',foreground='yellow',font=('',25))
y.pack()
x.mainloop()
它会更改字体,但不会更改背景颜色。此代码在从https://repl.it/languages/tkinter运行时确实有效,另一位用户指出他已成功从 jupyter notebook 运行它。tkinter/tcl 版本与我两台计算机上的版本相同。但是,我仍然得到简单的默认设置。
这在所有 ttk 小部件(例如组合框)中似乎也是一致的。
我已经尝试了每个主题,并弄乱了 tcl 代码中的映射。非常困惑为什么我会遇到这个问题。这里有人遇到过吗?可能是时候切换到 pyQT 了。
解决方案
对于大多数 ttk 小部件(尤其包括树视图)本机运行时(可能是或) winnative
, Windows 上的默认主题不允许您更改背景颜色。其他主题(例如,或)允许您更改该方面(或者他们不会忽略它);由主题来选择是否忽略您的设置,并且本机主题优先遵循平台 GUI 设计指南而不是您提供的指令。xpnative
vista
alt
classic
clam
另请参阅此问题: 如何更改 tkinter 应用程序的整体主题?
请注意,其他平台可能有更严格的主题;OSX的aqua
主题定义特别严格。(虽然改变主题并不足以让应用程序感觉是原生的;不同的平台也喜欢使用不同的小部件进行某些操作,并且有不同的方式来布置它们的 GUI。此外,GUI 的某些方面完全不同。跨平台的 GUI 创建仍然很困难。 )
推荐阅读
- reactjs - 如何在 setTimeout 中使用钩子?
- android - 避免在 ListAdapter 构造函数中调用 submitList
- in-app-billing - 在 2020 年 6 月 23 日之前打开此应用以确认您的订阅
- html - CSS文本滑动动画无法正常工作
- python - python类内部逻辑
- google-calendar-api - 如何使用 Google Calendar API 发布活动?
- reactjs - React Native 上下文内容不断回来
- google-sheets-query - 隐藏列的重复值
- swift - 如何使用 URL 方案打开 vlc
- android - Android中意外的ArrayIndexOutOfBoundsException