【问题标题】:ARGB in tkinter ttk behaves unexpectedlytkinter ttk 中的 ARGB 行为异常
【发布时间】:2019-05-30 08:38:29
【问题描述】:

我一直在尝试学习 Tkinter,随后又尝试学习 ttk 来创建 GUI。与 ttk 合作时,我注意到发生了一些奇怪的事情。当我以 ARGB 格式给出任何颜色时,例如'#80FFFFFF',没有错误,但特定的小部件只是变成了一个小方块。为什么会这样?

这是一个例子,

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

s = ttk.Style()

s.configure('b1.TButton', background='#FF0000')
s.configure('b2.TButton', background='#80FFFFFF')

b1 = ttk.Button(root, style='b1.TButton')
b2 = ttk.Button(root, style='b2.TButton')

b1.grid()
b2.grid()

root.mainloop()

这是这段代码的结果:

【问题讨论】:

  • 经过一些测试和阅读后,我相信这是因为额外的 FF 告诉 ARGB 是透明的。看到 Tkinter 和透明度在 tkinter 中即使不是不可能的概念也是一个困难的概念,它可能会导致按钮以这种方式运行,因为它不知道如何显示具有透明度的按钮。

标签: python tkinter colors


【解决方案1】:

Tkinter 按钮不支持透明度,所以我的想法是 ARGB 代码中告诉颜色透明的额外 FF 是导致问题的原因。

我的研究猜测是,由于透明颜色代码,按钮无法正确格式化,因此在显示按钮时会导致此问题。

您可以通过将 FF 添加到任何 ARGB 颜色来进行测试,并看到相同的效果。

【讨论】:

  • 是的,但是当你给一个颜色字符串 8 时,tkinter 只会给你一个错误。ttk 不应该做同样的事情吗?
  • @PrateekDhanuka 不一定。 TTK 是一组类似于 tk 小部件但旨在支持样式的小部件。它们不是 tk 小部件的副本,因此它们处理问题的方式可能与 tk 小部件不同。
猜你喜欢
  • 2020-08-05
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多