【问题标题】:Python Tkinter: Why doesn't the background option for button work [duplicate]Python Tkinter:为什么按钮的背景选项不起作用[重复]
【发布时间】:2018-06-04 01:15:06
【问题描述】:

这是我的代码:

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】:

    您的代码确实有效,只是'#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()
    

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2018-01-24
      相关资源
      最近更新 更多