2009-10-07 265 views
13

我一直在編程Python中使用Tkinter章節,並遇到一個問題,即按鈕的前景和背景顏色不會改變。我正在使用Python 2.6.1開發Mac OS X 10.6系統。標籤的顏色會改變,但不是按鈕的顏色。例如:如何在Mac OS X上更改Tkinter Button的前景色或背景色?

from Tkinter import * 

Label(None, text='label', fg='green', bg='black').pack() 
Button(None, text='button', fg='green', bg='black').pack() 

mainloop() 

在我的Mac系統上,標籤的顏色發生變化,但按鈕的顏色不變。在Python 2.6.1的Windows系統上,標籤和按鈕的顏色都會改變。

任何人都知道發生了什麼問題?

我檢查了界面生成器,它似乎沒有選項來更改該工具中按鈕的前景色或背景色。有能力編輯標籤的前景和背景顏色。

Mac OS X渲染系統(Quartz?)可能不支持(輕鬆地)更改按鈕的fg和bg。

回答

17

我認爲答案是,mac上的按鈕根本不支持更改背景和前景色。正如你所看到的,這不是Tk獨有的。

+0

是的,謝謝。輕鬆接受你:)。直到有更好的答案出現。 – 2009-10-07 21:02:47

10

對於像我一樣發生此問題的其他人,解決方案是使用ttk模塊,該模塊在OS X 10.7上默認可用。不幸的是,設置背景顏色仍然不起作用,但是文字顏色確實如此。

它需要一個小改動代碼:

原文:

from Tkinter import * 

Label(None, text='label', fg='green', bg='black').pack() 
Button(None, text='button', fg='green', bg='black').pack() 

mainloop() 

用TTK:

import tkinter as tk 
from tkinter import ttk 

root = tk.Tk() 

# background="..." doesn't work... 
ttk.Style().configure('green/black.TLabel', foreground='green', background='black') 
ttk.Style().configure('green/black.TButton', foreground='green', background='black') 

label = ttk.Label(root, text='I am a ttk.Label with text!', style='green/black.TLabel') 
label.pack() 

button = ttk.Button(root, text='Click Me!', style='green/black.TButton') 
button.pack() 

root.mainloop() 
0

我一直在尋找,爲什麼這不能正常工作。我發現了一種快速的方法來嘗試修復它,讓它有一個標籤,然後用標籤綁定點擊。然後讓標籤短時間改變顏色以模仿點擊。這是一個例子。

def buttonPress(*args): 
    searchB.config(state = "active") 
    searchB.update() 
    time.sleep(0.2) 
    searchB.config(state = "normal") 
    ## Whatever command you want 

    searchB = Label(main, text = "Search", bg = "#fecc14", fg = "Black", activebackground = "Red", highlightbackground="Black") 
    searchB.bind("<Button-1>", startSearch) 
    searchB.pack() 
5

存在用於改變按鈕在Mac上背景的溶液。

用途:

highlightbackground=color 

例如:

submit = Button(root, text="Generate", highlightbackground='#3E4149') 

這導致下面,一個漂亮的按鈕與背景適合於:

Button

1

確認以下代碼可以在Mac上更改tkinter Button的背景OS X.

self.btn_open = tk.Button(self.toolbar, 
          text = "Open", 
          command=self.open, 
          highlightbackground = "gray") 

但它不能改變bg的ttk.Button。

+0

這應該是正確答案了 – Chaikitty 2017-12-02 21:49:06

1

這爲我工作:

self.gnuplot_bt = Button(
     self.run_but_container, text="Plot with Gnuplot", font="Helvetica", command=self.gnuplot, 
     highlightbackground ="#8EF0F7", pady=2, relief=FLAT 
    ) 
+0

精彩;實際上,'kwarg:highlightbackground'與tkinter OSX一起使用 – 2018-02-22 11:11:51