Python Tkinter:为什么按钮的后台选项不起作用[重复]

问题描述 投票:0回答:1

这是我的代码:

for i in range(0, len(btn_txt)):
    btns.append(tk.Button(calc, text = btn_txt[i], background = "#CCCCCC"))
    btns[i].grid(column = i % 7, row = i // 7 + 1)
    btns[i].bind("<Button-1>", lambda event, n = btn_txt[i]: get_key(n))

问题:background =“#CCCCCC”没有改变我的按钮的颜色......我试着查看tkinter的文档并做了进一步的搜索,但我没有找到它的解决方案。我希望有人能帮帮忙。

PS:我在mac上编码

在此先感谢您的帮助!

python-3.x tkinter
1个回答
-1
投票

你的代码确实有效,只是'#CCCCCC'与默认颜色非常相似。因此很难区分它们。

例如,如果使用foreground选项为文本而不是背景着色,则会使文本“不可见”:

import tkinter as tk

root = tk.Tk()

btn = tk.Button(root, text="asd")

btn['fg'] = '#CCCCCC'

btn.pack()

root.mainloop()

使用this answer可以检查颜色的RGB值让我们看看它们产生什么:

import tkinter as tk

root = tk.Tk()

btn = tk.Button(root, text="asd")

default_rgb = btn.winfo_rgb(btn['bg'])
wanted_rgb = btn.winfo_rgb('#CCCCCC')
reference_rgb = btn.winfo_rgb('grey')

print(default_rgb)
print(wanted_rgb)
print(reference_rgb)

btn.pack()

root.mainloop()

正如您可以看到两种颜色,默认的SystemButtonFace#CCCCCC非常相似,特别是当您想到参考灰色的接近程度以及它的rgb值有多远时。


请参阅下面的示例,以便于着色:

import tkinter as tk

root = tk.Tk()

btn = tk.Button(root, text="Colors")

#when button isn't pressed
btn['fg'] = 'orange'
btn['bg'] = 'blue'

#when button is pressed
btn['activeforeground'] = 'red'
btn['activebackground'] = 'green'

btn.pack()

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.